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

时间:2014-01-10 16:49:48

标签: recursion

我不确定为什么这个递归不起作用!我正试图从i = 0到n得到总输入。我也在测试递归而不是'for loop'来查看它的执行情况。程序运行正常但在输入后停止。我很感激任何评论,谢谢!

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;
}

2 个答案:

答案 0 :(得分:1)

更改     int sum = sigma( n+sigma(n-1) ); 至      int sum = n + sigma( n-1 );

正如您所写,请致电sigma(3)然后致电sigma(5)等......

此外,从保护案例返回0,而不是1。

答案 1 :(得分:0)

我认为应该是

int sum = n + sigma(n-1)