【发布时间】:2015-07-11 17:17:58
【问题描述】:
我正在学习递归,我了解程序的一般工作原理,但我很困惑为什么在第一次返回 null 后程序继续工作,而值 16 太大了。
基本上,下面的代码将运行并从 1、6、11 到 16 每次将 5 添加到 start 参数。由于 16 > 13,它表示返回 null。当 JavaScript 在第 6 行只说 return null 时,它怎么知道要返回并尝试计算 13?
非常感谢任何帮助。这是我正在看的书中的代码:
function findSolution(target) {
function find(start, history) {
if (start == target)
return history;
else if (start > target)
return null;
else
return find(start + 5, "(" + history + " + 5)") ||
find(start * 3, "(" + history + " * 3)");
}
return find(1, "1");
}
console.log(findSolution(13));
【问题讨论】:
-
明确地说,它工作得很好,你只是问它是如何工作的
标签: javascript recursion null