为什么find(1," 1")是调用堆栈中的第一个?

时间:2017-04-02 04:47:38

标签: javascript recursion

我正在阅读雄辩的JavaScript,我想知道调用堆栈如何跳转到本书中指出的find(1, "1")。我想我想澄清一下我的想法。由于find()函数是在findSolution()函数的本地范围内定义的。首先调用findSolution()。要调用的第二个函数是在find(1,"1")声明的本地范围内返回findSolution()。这也允许find()函数使用参数target。这是解释的准确吗?对不起,如果我有点困惑。

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));

0 个答案:

没有答案