黑马程序员技术交流社区

标题: 方法递归 怎么看都看不明白呀,过程是怎样的??? [打印本页]

作者: yaolv7    时间: 2016-4-8 18:14
标题: 方法递归 怎么看都看不明白呀,过程是怎样的???

public class Test {
        public static void main(String[] args) {
                int sum = getSum(4);
                System.out.println(sum);
        }
       
        public static int getSum(int n) {
                if(n == 1) {
                        return 1;
                }
                int temp = getSum(n - 1);
                return temp + n;
        }
}

这里不是把1返回给num了吗,为啥会是10?
作者: syasuker    时间: 2016-4-8 20:49
本帖最后由 syasuker 于 2016-4-9 11:53 编辑

这个推演的结果注意的是变量temp接收temp + n;也就是求和从(n-1)+(n-2)+(n-3).....1
  1. getSum(4) = temp+n = getSum(3)+4 = 6+4 = 10
  2. getSum(3) = temp+n = getSum(2)+3 = 3+3 = 6
  3. getSum(2) = temp+n = getSum(1)+2 = 1+2 = 3
复制代码

作者: fanlelong    时间: 2016-4-8 21:34
syasuker 发表于 2016-4-8 20:49
虽然我不知道这蛋疼的代码是咋回事,但实际上是循环了3次每次的结果是这样的,而return temp是因为int temp ...

正解就是这样
作者: 晴苑    时间: 2016-4-8 21:42
二楼大神啊
作者: yaolv7    时间: 2016-4-8 22:22
syasuker 发表于 2016-4-8 20:49
虽然我不知道这蛋疼的代码是咋回事,但实际上是循环了3次每次的结果是这样的,而return temp是因为int temp ...

大神,能说得明白点儿么{:3_65:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2