【发布时间】:2020-05-03 12:06:25
【问题描述】:
我试图理解一个用 JavaScript 编写的示例。实际上,我正在阅读 Eloquent JavaScript 这本书,但在阅读有关递归的主题时卡住了。
下面是例子的说明:
从数字 1 开始,反复加 5 或 乘以 3,可以产生无限的数字集。如何 你会写一个函数,给定一个数字,试图找到一个 这样的加法和乘法序列产生 号码?
示例代码如下:
function findSolution(target) {
function find(current, history) {
if (current == target) {
return history;
} else if (current > target) {
return null;
} else {
return find(current + 5, `(${history} + 5)`) ||
find(current * 3, `(${history} * 3)`);
}
}
return find(1, "1");
}
【问题讨论】:
-
你有什么问题?
-
具体有什么不明白的?您是否在调试器中逐步完成它或放入日志语句以了解正在发生的事情?还是用笔和纸“玩电脑”来单步执行代码?
-
是的,实际上我只是想了解这段代码是如何手动在纸上工作的。
-
@ASDFGerte 或者它一定很受欢迎,以至于有很多人阅读它并提出问题。没有人对我写的解释提出问题,但这可能是因为我没有写任何流行的东西,而不是质量好的迹象。另一方面,阅读教科书的人仍然有问题以澄清他们的理解这一事实并不是对这本书的控诉;任何学习困难主题的人有时都需要就他们所阅读的内容提出问题。
-
“我希望作者将其视为改进的目标”,这将是一个富有成效的结果 :) 另一个结果是,我获得了信息,它确实是一本受欢迎的书,并且至少有一个声音说这很好。
标签: javascript algorithm recursion