我有一个简单的递归函数,它将之前的所有数字相加。
function add(n) {
if (n == 0) {
return 1; // when it reaches here it should give me 1.
}
return n + add(n - 1);
}
console.log( add(5) ); // give me 16
当执行到第 3 行时,它应该返回 me 1,但实际上是 return me 16。return 在这里实际上是如何工作的?
最佳答案
递归在递归步骤调用处暂停程序并继续解决子问题,并且当满足基本条件时,所有返回语句将控制权传递回被调用者语句。
所以
add(5)-->return 5+add(4)
|-->return 4+add(3)
|-->return 3+add(2)
|-->return 2+add(1)
|-->return 1+add(0)//base condition, return 1 for add(0) which in return return 2
1-->2-->4-->7-->11-->16 (In reverse)
关于javascript - JavaScript 中的 return 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045908/