【发布时间】:2015-01-28 09:26:33
【问题描述】:
我正在阅读 eloquent javascript 的第 3 章,并且刚刚介绍了递归,我正在尝试围绕这个概念来思考。
也有人能解释一下函数 find 中的第二个参数 history 吗?
历史已经定义了吗?
考虑这个难题:从数字 1 开始,反复加 5 或乘以 3,可以产生无限数量的新数字。你将如何编写一个函数,给定一个数字,试图找到一系列产生该数字的加法和乘法?例如,数字 13 可以先乘以 3,然后再加两次 5,而数字 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));
【问题讨论】:
-
请记住,
history只是一个字符串,仅此而已。 -
在这些情况下,我发现一两个console.log() 可以真正解决问题。
标签: javascript recursion