A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


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?

4 个回复

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

大神,能说得明白点儿么{:3_65:}
回复 使用道具 举报
二楼大神啊
回复 使用道具 举报
syasuker 发表于 2016-4-8 20:49
虽然我不知道这蛋疼的代码是咋回事,但实际上是循环了3次每次的结果是这样的,而return temp是因为int temp ...

正解就是这样
回复 使用道具 举报
本帖最后由 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
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马