js中的递归调用
functionfoo(i){if(i<0)return;console.log('begin:'+i);foo(i-1);console.log('end:'+i);}...
function foo(i) {
if (i < 0)
return;
console.log('begin:' + i);
foo(i - 1);
console.log('end:' + i);
}
foo(3);
// 输出:
// begin:3
// begin:2
// begin:1
// begin:0
// end:0
// end:1
// end:2
// end:3
--------------------------------------------------------------------------------
上面的调用结果中,end是如何输出的?当i等于3时begin等于3,然后进入foo(i-1),程序就会回到第一步再次判断“i<0”,然后又会输出begin 我不明白 end是什么输出的? 展开
if (i < 0)
return;
console.log('begin:' + i);
foo(i - 1);
console.log('end:' + i);
}
foo(3);
// 输出:
// begin:3
// begin:2
// begin:1
// begin:0
// end:0
// end:1
// end:2
// end:3
--------------------------------------------------------------------------------
上面的调用结果中,end是如何输出的?当i等于3时begin等于3,然后进入foo(i-1),程序就会回到第一步再次判断“i<0”,然后又会输出begin 我不明白 end是什么输出的? 展开
2个回答
展开全部
其实,这就是一个简单的函数传参例子,我来给你简单讲一下:
foo(3);也就是往函数里面传入一个值等于3,也就是i=3
function foo(i) {
if (i < 0) //因为i=3了,这个时候3不是小于0,因此会跳到后面去执行,
return; //只有当i小于0时,才会输出结果,最终结果就等于0;
console.log('begin:' + i);
foo(i - 1);
console.log('end:' + i);
}
foo(3);也就是往函数里面传入一个值等于3,也就是i=3
function foo(i) {
if (i < 0) //因为i=3了,这个时候3不是小于0,因此会跳到后面去执行,
return; //只有当i小于0时,才会输出结果,最终结果就等于0;
console.log('begin:' + i);
foo(i - 1);
console.log('end:' + i);
}
更多追问追答
追问
1,function foo(i) {
2,if (i < 0)
3,return;
4,console.log('begin:' + i);
5,foo(i - 1);
6,console.log('end:' + i);
7,}
8,foo(3);
当走到第五行是这个函数不是又从第二行开始判断吗?
追答
是的,i开始等于3,走到第5行减1,等于2,因此第二次会输出2,以此类推,当i=0时,才会最终结束整个判断过程
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询