首页 > 解决方案 > 了解这个问题的递归?

问题描述

这不是与某个问题相关的问题,但我很难理解这个问题的输出和程序流程!

在此处输入图像描述

function one(n) {
  if(n == 1) {
    return
  }

  n--;
  console.log(n);

  return two(one(n), one(n))
}

function two(one, two) {
  console.log(one);
  console.log(two);
}

one(9);

首先,输出并不是我认为应该的,其次,我很困惑在执行第 9 行时,由 1 描述的函数 one(n) 是否会运行并耗尽,然后是由 1 描述的函数 one(n) 2将运行.....或两者将同时运行(1和2)??

它就像一个函数中的两个函数。

为什么函数 two() 将 n 值输出为未定义而不是适当的递减值?

标签: javascriptrecursion

解决方案


我很困惑在执行第 9 行时,由 1 描述的函数 one(n) 是否会运行并耗尽,然后由 2 描述的函数 one(n) 是否会运行..

是的。在 JavaScript 中没有两条语句同时执行。

为什么函数 two() 将 n 值输出为未定义而不是适当的递减值?

因为它确实输出了one(n)调用的结果,并且函数one没有返回值。


推荐阅读