function a(n){ if(n>0){ return a(n-1)+n; } return 0; } var num=a(5); console.log(num);我想知道每一步是如何运行的,以及为什么为什么要return 0以及return a(n-1)+n;
1 回答
已采纳
风筝_0010
TA贡献45条经验 获得超15个赞
这个用if语句规定了传入的n不能小于1,如果小于1就直接返回0。
如果传入n的是大于1的值,那就return a(n-1)+n;
这个return的是a(n-1) + n的值,所以相当于把n-1当参数传给a再执行一次,并把执行的结果和n相加,如果n-1还是大于0,那就return a(n-2) + (n-1),这个时候还会把n-2当参数传给a执行一次,并把执行的结果和n-1相加,就这样一直递归,直到n小于1的时候不满足这个if的条件,会返回0,从函数角度来看就是:
f(n) = f(n-1) + n; f(n-1) = f(n-2) + n-1; ...... f(1) = f(0) + 1;
所以这样看就是:
f(n) = f(0) + 1 + 2 + 3 + 4...... + n; f(0) = 0;
你这个里面可以看做f(5) = 0+1+2+3+4+5 = 15;
添加回答
举报
0/150
提交
取消