Recursion C中的递归无法从原型返回结果!?

Recursion C中的递归无法从原型返回结果!?,recursion,Recursion,我不知道为什么这个递归不起作用!我试图得到从I=0到n的输入的总数。我也在测试递归,而不是“for循环”,看看它是如何执行的。程序运行正常,但输入后停止。如果您有任何意见,我将不胜感激,谢谢 int sigma (int n) { if (n <= 0) // Base Call return 1; else { printf ("%d", n); int sum = sigma( n+sigma(n-1) );

我不知道为什么这个递归不起作用!我试图得到从I=0到n的输入的总数。我也在测试递归,而不是“for循环”,看看它是如何执行的。程序运行正常,但输入后停止。如果您有任何意见,我将不胜感激,谢谢

int sigma (int n)
{
    if (n <= 0) // Base Call
        return 1;
    else {
        printf ("%d", n);
        int sum = sigma( n+sigma(n-1) ); 
        return sum;
    }

    // recursive call to calculate any sum>0; 
    // for example: input=3; sum=(3+sigma(3-1)); sum=(3+sigma(2))
    // do sigma(2)=2+sigma(2-1)=2+sigma(1);
    // so sigma(1)=1+sigma(1-1)=1+sigma(0)=1; 
    // finally, sigma(3)=3+2+1+0=6
}

int main (int argc, char *argv[])   
{ 
    int n;

    printf("Enter a positive integer for sum : ");
    scanf( " %d ", &n);

    int sum = sigma(n);
    printf("The sum of all numbers for your entry: %d\n", sum);

    getch();
    return 0;
}
intsigma(intn)
{
if(n0;
//例如:输入=3;总和=(3+西格玛(3-1));总和=(3+西格玛(2))
//do西格玛(2)=2+西格玛(2-1)=2+西格玛(1);
//因此,西格玛(1)=1+西格玛(1-1)=1+西格玛(0)=1;
//最后,西格玛(3)=3+2+1+0=6
}
int main(int argc,char*argv[])
{ 
int n;
printf(“为sum:”输入一个正整数);
scanf(“%d”和“&n”);
整数和=西格玛(n);
printf(“您输入的所有数字的总和:%d\n”,总和);
getch();
返回0;
}
更改
int sum=sigma(n+sigma(n-1));
int sum=n+sigma(n-1);

正如您所写的,调用
sigma(3)
然后调用
sigma(5)
,等等

另外,从防护罩中返回0,而不是1。

我认为应该是

int sum = n + sigma(n-1)

我不明白你所说的“程序正常运行,但在输入后停止”是什么意思。它只是不断地向sigma添加参数,直到我认为它最终耗尽内存。这是因为你递归地调用sigma(sigma)在你的代码中。看到下面的答案。让
if
分支返回0而不是1。天哪!我不敢相信自己没有看到:)感谢大家的快速回复!