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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Oh.Ba 中级黑马   /  2015-4-27 23:33  /  674 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class DiGui {
        public static void main(String[] args) {
                int sum = getSum(4);
               
                System.out.println("Sum="+sum);
        }
                public static int getSum(int n) {
                                if (n==1) {
                                        return 1;
                                }
                                int temp = getSum(n-1);
                                return temp+n;
                }
}
为什么它的结果为10??我看来看去都觉得这结果是无限在循环。。
谁能解释一下?????

捕获.PNG (12.46 KB, 下载次数: 16)

捕获.PNG

8 个回复

正序浏览
Oh.Ba 中级黑马 2015-4-29 21:10:25
9#
Ray丶少年 发表于 2015-4-28 21:52
这是画的图,你看下先

不懂return为什么会循环
回复 使用道具 举报
Oh.Ba 中级黑马 2015-4-29 21:08:23
8#
依秋无泪 发表于 2015-4-28 22:35
如果不能理解,你可以先另n=1.理解下,n=2理解下,n=3理解下

就是return那里搞不懂
回复 使用道具 举报
如果不能理解,你可以先另n=1.理解下,n=2理解下,n=3理解下
回复 使用道具 举报
说白话点就是,return 1开始计算递归数列的和
回复 使用道具 举报
Oh.Ba 发表于 2015-4-28 20:59
为什么会返回?

这是画的图,你看下先

a.png (83.97 KB, 下载次数: 17)

图解

图解
回复 使用道具 举报
因为每次调用方法的时候   都还没有执行到return语句,说明被调用的方法还没有执行完就又再次调用了方法,直到n==1 才开始执行return一级一级的往回返.每返回一次,之前被调用的方法才会被释放.
回复 使用道具 举报
Ray丶少年 发表于 2015-4-28 07:37
并没有啊,当n==1时就从后面开始返回了

为什么会返回?
回复 使用道具 举报
并没有啊,当n==1时就从后面开始返回了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马