javascript - 如何使用递归对给定整数以下的所有整数求和

标签 javascript algorithm recursion

马上,这不是家庭作业问题。我在空闲时间练习递归问题,但我仍在思考这个概念。我非常接近解决这个问题,但是当我将它们加在一起时,我无法弄清楚如何跳过根整数“n”。这是到目前为止的代码:

var sumBelow = function (n) {
    console.log(n);
    // base case
    if (n === 0) {
        console.log('we hit the base case');
        return 0;
    }
    // initialize var to hold sum
    if (!sum_sumBelow) var sum_sumBelow = 0;
    // add numbers
    sum_sumBelow = n + sumBelow(n - 1);
    return sum_sumBelow;
};

console.log('answer is', sumBelow(4));

当我调用“sumBelow(4)”时,我想要的是 3+2+1,但我目前得到的是 4+3+2+1。

如何跳过根参数???

最佳答案

假设您正在正确打印所有内容,只是更改有什么问题:

sum_sumBelow = n + sumBelow(n - 1);

sum_sumBelow = n - 1 + sumBelow(n - 1);

在你的例子中; answer is 6 会在控制台输出3 + 2 + 1 你想要吗?

注意这绝不是最好的递归解决方案,但它仍然是一个。

这相当于 @RobG 提供的整个函数它使用三元:

function sumBelow(n) {return n ? n-1 + sumBelow(n-1) : 0}

关于javascript - 如何使用递归对给定整数以下的所有整数求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44298020/

相关文章:

javascript - 我如何最好地构建一个以大型重型非 Angular 库为中心的 Angular 应用程序(本例为 : openlayers map)

javascript - 对象数组中的子字符串

javascript - 选择决定打开哪个表单操作

algorithm - Alpha Beta 搜索和换位表

Javascript 函数不会在给定条件下终止

python - 使用递归的范围 (1,n,2) 值的总和

javascript - 使用jquery自动触发点击将所有图形导出为图像

python - 计算 True 和 False 的有效方法

算法复杂度分析

c++ - 递归计算谢尔宾斯基三角形中三角形的数量