如何在变量JavaScript中保存递归函数的返回值

Was*_*sea 7 javascript recursion return return-value

我需要将返回值存储在变量中.

我想知道如何修复此代码.我知道如果b的值为3,我会得到值= 2,但如果函数执行多次迭代,我就会被识别出来.我读到我应该使用回调或其他东西,但我不知道如何,也解释为什么我的代码不起作用,我应该如何解决它.(当然这段代码是出于演示的目的,好像我会告诉你它原来可能会让人感到困惑.)非常感谢!

var b = 70;

function myfunction() {
    b--;
    if (b < 3) {
        return b;
    } else {
        myfunction();
    }
}
value = myfunction();
console.log(value);
Run Code Online (Sandbox Code Playgroud)

Nik*_*Nik 5

您的代码:myFunction()undefined在第一次调用时返回 void/ ,这不是递归方法。

以下示例是递归方法。递归函数通常接收一个要处理的参数并返回一个最终值,该值冒泡(返回)到第一个调用者。

function myfunction(b){
  b--;
  if(b<3) return b;
  else return myFunction(b);
}
Run Code Online (Sandbox Code Playgroud)

当你调用一个递归函数时,你应该准备一个逃逸测试。否则你可能会陷入无限循环。

无限递归的例子

function badFunction(){
return badFunction();
}
// DON'T call badFunction()
Run Code Online (Sandbox Code Playgroud)

递归示例

function myfunction(b){
  b--;
  if(b<3) return b;
  else return myFunction(b);
}
Run Code Online (Sandbox Code Playgroud)
function badFunction(){
return badFunction();
}
// DON'T call badFunction()
Run Code Online (Sandbox Code Playgroud)