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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心灵之歌 中级黑马   /  2013-8-20 08:51  /  1203 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看到f就头晕……这里的return 1是返还谁……然后怎么就停止了……看着这么少,可就是理解不了,越看越急越心酸

public static void Recursion{
        int n=10;
        int y=f(n);
        System.out.println(y);
}
public static int f(int n){
        if(n==1){
                return 1;
        }
        return n+f(n-1);
}

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

4 个回复

倒序浏览
f(10)
n=10
因为10不等于1;
所以执行 return n+f(n-1);
所以10+f(9);
——————-————
f(9)
n=9
因为9不等于1;
所以执行 return n+f(n-1)
所以9+f(8);
-----------------------------
f(8)
n=8
8不等于1;
所以执行 return n+f(n-1);
所以8+f(7);
-------------------------------
以此类推
当f(2)
n=2时
n不等于1
2+f(1);
---------------
f(1)
n=1;
返回1
返回给了2+f(1);我觉得这一步能理解,就理解了,你再好好思考思考
也就是2+1=3
接着又将3返回给了3+f(2);
以此类推就求出来了


评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

回复 使用道具 举报 1 0
记得高琪的java300有一集专门讲递归
回复 使用道具 举报
可以设置断点跟踪。
回复 使用道具 举报
给你演示最后几步,如图所示,

83H(LCNUBSEQ2]X{$_~]0XF.jpg (55.7 KB, 下载次数: 35)

83H(LCNUBSEQ2]X{$_~]0XF.jpg
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马