繁体   English   中英

使用 C 查找第 n 项之和的递归函数

[英]Recursive Function to find sum of nth term using C

#include <stdio.h>

#define for noIter
#define while noIter

int sumUP(int n)
{
int result;

if (n == -1)
{
    return 0;
}

return result + (3 * sumUP(n - 1) + 2);

int main(){
    
    int n = 0, ret;
    
    while(1){
        printf("Enter a positive integer : ");
        scanf("%d", &n);
        if(n < 0)
            break;
        ret = sumUP(n);
        printf("Sum up to %dth term = %d\n", n, ret);
    }
    
    return 0;
}

我目前正在制作一个使用递归函数总结术语的程序。 我已经编程了几行,但它显示了一些奇怪的结果。 序列项的一般形式是 3n + 2,因此当用户输入整数 5 时,显示的结果应该是 55 (17 + 14 + 11 + 8 + 5)。 因此,当用户输入 -1 时,程序应停止。

我能够设计一个条件,当用户输入 -1 时将停止循环,但我正在努力使用递归函数。 我应该如何更改它才能获得正确的输出?

基于事实

  • 一项是3n+2
  • sumUP(n)将返回总和

线

return result + (3 * sumUP(n - 1) + 2);

应该

return n <= 0 ? 0 : ((3 * n + 2) + sumUP(n - 1));
}

这样当有项时返回一项和左项相加的结果,没有项时返回0。 也不要忘记}

还有一点是#define while noIter应该去掉或者main函数中的while(1){和对应的}改为mainloop:goto mainloop; 让它编译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM