JavaScript如何处理未知的价值?

时间:2018-02-24 09:39:42

标签: javascript loops

我是JavaScript新手并阅读book,在递归章节中,有一个示例如下

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"); // when will this run?
}

console.log(findSolution(24));
// → (((1 * 3) + 5) * 3)

我无法理解JavaScript如何运行这些原因,因为它预计在所有三个current案例中都会if为{?}}但是作者只是在函数外部运行,它以target为参数,而不是current。它是否取得了当前和历史的价值

return find(1,"1")

喜欢吊装?

2 个答案:

答案 0 :(得分:1)

currenthistoryfund函数的参数名称,而不是findSolution函数。

所以是的,它会在find(1, "1")用于调用该函数时获取这些值(稍后,当调用find(current * 5, …)find(current + 3, …)时)。

这与吊装没有任何关系或相关。

答案 1 :(得分:0)

find只是findSolution内的嵌套函数。find需要return find(1, "1")给出的2个参数。

每次拨打findSolution时都会生成该语句,因为find刚刚定义,您显然必须调用它。

请注意,targetfindSolution的参数,但也可以在该方法的嵌套函数中使用。