黑马程序员技术交流社区

标题: 递归问题 [打印本页]

作者: 心灵之歌    时间: 2013-8-20 08:51
标题: 递归问题
看到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);
}
作者: 漪顿    时间: 2013-8-20 09:12
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);
以此类推就求出来了



作者: EYE_SEE_YOU    时间: 2013-8-20 13:44
记得高琪的java300有一集专门讲递归
作者: javamov    时间: 2013-8-20 13:56
可以设置断点跟踪。
作者: meng    时间: 2013-8-20 14:52
给你演示最后几步,如图所示,

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

83H(LCNUBSEQ2]X{$_~]0XF.jpg





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