jay*_*ayc 5 javascript recursion
我正在通过雄辩的javascript进行第3章,并且刚刚介绍了递归,我正在尝试围绕这个概念.
还有人可以解释函数find中的第二个参数历史吗?
历史已定义?
考虑这个难题:从数字1开始并重复加5或乘以3,可以产生无限量的新数字.你会如何写一个函数,给定一个数字,试图找到一系列这样的加法和乘法产生这个数字?例如,可以通过首先乘以3然后再加上5两次来达到数字13,而根本不能达到数字15.
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(24));
Run Code Online (Sandbox Code Playgroud)
小智 0
find调用函数时指定历史记录。find如果不提供历史值,则无法调用该函数。请记住,该函数在被调用之前不会运行,因此历史记录在被告知其值"1"在线之前不会获得值。 变量历史记录是通过每次调用return find(1, "1");时逗号后面的内容来定义的。find