我正在阅读Eloquent JavaScript,我遇到了这个难题的例子:
考虑这个难题:从数字1开始并重复加5或乘以3,可以产生无限量的新数字.你会如何编写一个函数,给定一个数字,试图找到一个产生该数字的加法和乘法序列?
这是解决方案的代码:
function findSequence(goal) {
function find(start, history) {
if (start == goal)
return history;
else if (start > goal)
return null;
else
return find(start + 5, "(" + history + " + 5)") ||
find(start * 3, "(" + history + " * 3)");
}
return find(1, "1");
}
print(findSequence(24));
Run Code Online (Sandbox Code Playgroud)
如果没有参数start和goal的值,有人可以清楚dod find如何执行?递归是怎么发生的?