相关疑难解决方法(0)

这种递归如何工作?

这是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");
}

console.log(findSequence(24)); // => (((1 * 3) + 5) * 3)
Run Code Online (Sandbox Code Playgroud)

javascript algorithm recursion

5
推荐指数
1
解决办法
477
查看次数

你能解释一下Chap 3 Eloquent js的这个递归解决方案吗?

我正在通过雄辩的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)

javascript recursion

5
推荐指数
1
解决办法
1198
查看次数

标签 统计

javascript ×2

recursion ×2

algorithm ×1