2 jerry  j Jerry__J 于 2016.04.22 18:30 提问

对java中递归问题的输出不理解,求大神解答!谢谢

对于这一段代码我能够理解,压栈然后出栈就是6,5,4

 package recursion;

public class testRecursion {
    public static void main(String[] args) {
        int num=3;
        recursion(num);
    }
    private static void recursion(int n){
        n++;
        if(n<7){
            recursion(n);
            System.out.println(n);
        }
    }
}

但是对这段代码的输出很不理解

 package recursion;

public class testRecursion {
    public static void main(String[] args) {
        int num=3;
        recursion(num);
    }
    private static void recursion(int n){
        n=n+1;
        if(n<7){
            recursion(n);
            recursion(n);
            System.out.println(n);
        }
    }
}

输出是:6 6 5 6 6 5 4

2个回答

binggouxsm
binggouxsm   2016.04.22 20:04
已采纳

图片说明

就是一个深度遍历的二叉树

Jerry__J
Jerry__J 万分感谢!!!!懂了
大约 2 年之前 回复
binggouxsm
binggouxsm 说错了,更正下是后序遍历
大约 2 年之前 回复
whoSaidNo
whoSaidNo   2016.04.22 20:14

图片说明

第一个rescurison(4)输出6 ,6, 5,
第二个也输出 6 , 6,5
最后输出6

Jerry__J
Jerry__J 懂了~谢谢
大约 2 年之前 回复
whoSaidNo
whoSaidNo 我也说错了,是4
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
python使用递归思想处理问题
今天我们主要学习使用递归思想处理,斐波那契数列,打印文件层级结构 ,汉诺塔小游戏。递归说的稍微简点就是函数调用自身的一种方法,哪有人说,自己调用自己那不就死循环的了吗,那就需要我们自己设定结束条件,我个人认为递归思想你只要把开头和结束条件理清了思路,中间的那大部分就是一遍又一遍的调用自身。 先来看一下斐波纳挈数列,我们先是用循环在使用递归思想来打印: def fab(n): a = 0
java利用递归解决迷宫问题
用一个二维数组表示迷宫,0表示通路,1表示围墙,给定入口和出口,寻找所有可能的通路。例如: 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 0 1 1 0 1 1
java 递归的理解
package test;  public class test {      public static void main(String[] args) {          int num=3;          recursion(num);      }      private static void recursion(int n){          n++;
求n个元素的全排列 ——Java/递归/蓝桥杯
package 递归; public class digui2_2 { /** * 【递归】求n个元素的全排列 abc acb bac bca cab cba * * @param args */ public static void f(char data[], int k) { // 当前关注点k if (k == data.length) { for (in...
猴子分桃二采用递归的方式
package lianx; public class MonKeyTao { static int ts=0;//桃子总数 int fs=1;//记录分的次数 static int hs=5;//猴子数... int tsscope=5000;//桃子数的取值范围.太大容易溢出. public int fT(int t){ if(t==t
java中使用递归求解汉诺塔问题
最近帮朋友编写了一段代码,主要原理就是和解决汉诺塔问题类似,下面就开以此来讲解一下汉诺塔问题。 问题描述如下: 古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子始终保持大盘在下,小盘在上。在移动过程中可以利用B座。 要求输入层数,运算后输出每
利用递归实现求n位所有格雷码
1、详细分析 我们先看一串1位格雷码、2位格雷码、3位格雷码的结果: 0 1 00 01 11 10 000 001 011 010 110 111 101 100 可以知道:2位格雷码是由1位格雷码前面加0和1,并且是除了第一位其他位都对称                     3位格雷码是由2位格雷码前面加0和1,并且是除了第一位其他位都对称 因此可以用到
递归算法-求最大公约数-java实现
/** * 递归算法:求最大公约数,根据欧几里德知道-》m和n(m > n)的最大公约数 = n 和m%n的最大公约数 * * @author timmy1 * */public class GreatestCommonDivisor { public int getGCD(int m, int n) { if (n == 0) { return m; } else { return
java递归实现最大公约数和最小公倍数
第一个最大公约数使用的2300年前被发明的欧几里得算法求得,大致原理为: 如果有两个非负整数p、q,若q==0,则最大公约数为p;否则,p和q的最大公约数就是p除以q所得的余数和q的最大公约数。 第二个最小公倍数更简单 公式:最小公倍数=两整数的乘积÷最大公约数 关键代码如下: //最大公约数(Greatest Common Divisor) publ
斐波那契:生兔子问题——java/递归/蓝桥杯
/** * * * @author 光速模式薛 * */ // 迭代思想 public class tuzi { public static void main(String[] args) { /* int i; int a[] = new int[40]; a[0] = 0; a[1] = 1; System.out.println(a[0]); Sy...