其实难点就在于对递归函数的理解。所谓递归函数,就是函数在执行时调用自己。程序在调用一个函数时,首先执行这个函数的程序,执行完毕后返回到原调用前的上一级程序继续运行这一级程序。调用递归函数也是如此,在执行完递归函数,得到3之后,它要退出递归函数回到调用它的原来的主程序继续去执行原来的主程序。由于调用递归函数时程序是逐级进行的,所以返回时也是逆向逐级执行程序并返回的,即在得到3后,返回上一级执行这一级的程序就得到4(即再次执行document.writeln(num1)),再返回上一级执行这一级的程序得到5(即再次执行document.writeln(num1))。其实,这就是一个简单的函数传参例子,我来给你简单讲一下:
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)
}
return document.writeln(b)
改成
return b
另外
sum(x)需要返回值
比如
b=sum(x)