如何将递归函数的返回值保存在变量 JavaScript 中
Posted
技术标签:
【中文标题】如何将递归函数的返回值保存在变量 JavaScript 中【英文标题】:How to save the return value of a recursive function in a variable JavaScript 【发布时间】:2016-02-04 10:42:14 【问题描述】:我需要将返回值存储在一个变量中。
我想知道如何修复此代码。我知道如果 b 的值为 3,我会得到 value=2,但如果函数进行多次迭代,我会变得不明。我读到我应该使用回调或其他东西,但我不知道如何,也解释了为什么我的代码不起作用以及我应该如何修复它。 (当然,此代码用于演示目的,就好像我会向您展示原始代码一样,它可能会让人感到困惑。)非常感谢!
var b = 70;
function myfunction()
b--;
if (b < 3)
return b;
else
myfunction();
value = myfunction();
console.log(value);
【问题讨论】:
在else
中使用return myfunction();
非常感谢!请您解释一下这是如何工作的。
Understanding how recursive functions work
【参考方案1】:
var b = 70;
function myfunction()
b--;
if (b < 3)
return b;
else
myfunction();
return b;
value = myfunction();
console.log(value);
【讨论】:
【参考方案2】:您的代码:myFunction()
将在第一次调用时返回 void/undefined
,这不是递归方法。
以下示例是递归方法。递归函数通常接收要处理的参数并返回最终值,该值冒泡(返回)到第一个调用者。
function myfunction(b)
b--;
if(b<3) return b;
else return myFunction(b);
当您调用递归函数时,您应该准备一个转义测试。否则你可能会陷入无限循环。
无限递归示例
function badFunction()
return badFunction();
// DON'T call badFunction()
递归示例
var b = 70;
var safety = 1000;
function myfunction(local_b)
if(safety<0) return;
safety--;
// main task
local_b--;
if (local_b < 3)
return local_b;
return myfunction(local_b);
var value = myfunction(b); // when b = 70, value = 2
console.log(value);
document.getElementById('value').innerhtml = value;
<span id="value">_</span>
【讨论】:
以上是关于如何将递归函数的返回值保存在变量 JavaScript 中的主要内容,如果未能解决你的问题,请参考以下文章