javascript - JavaScript 中的 return 是如何工作的

标签 javascript recursion return

我有一个简单的递归函数,它将之前的所有数字相加。

function add(n) {
  if (n == 0) {
    return 1; // when it reaches here it should give me 1.
  }
  return n + add(n - 1);
}

console.log( add(5) ); // give me 16

当执行到第 3 行时,它应该返回 me 1,但实际上是 return me 16。return 在这里实际上是如何工作的?

最佳答案

递归在递归步骤调用处暂停程序并继续解决子问题,并且当满足基本条件时,所有返回语句将控制权传递回被调用者语句。

所以

add(5)-->return 5+add(4)
                     |-->return 4+add(3)
                                   |-->return 3+add(2)
                                                 |-->return 2+add(1)
                                                                 |-->return 1+add(0)//base condition, return 1 for add(0) which in return return 2

1-->2-->4-->7-->11-->16 (In reverse)

关于javascript - JavaScript 中的 return 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045908/

相关文章:

c++ - 为什么返回不复制对象?

javascript - $.test = function() 与 var test = function()

javascript - 使用 vanilla Javascript 实现更新 DOM 元素的最佳方法是什么?

javascript - 灯箱缩略图问题 : header width becoming extended when viewing image

javascript - 从 JavaScript 中的嵌套函数返回

c# - Asp.NET 返回空 List<Object> C#

javascript - 使用 oauth.io 时 Facebook 分享和点赞的问题

postgresql - 对根元素 postgres 的 CTE 查询

algorithm - 深度优先搜索递归或迭代

c++ - ifstream 无法在递归调用中打开