我不确定为什么这个递归不起作用!我正试图从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;
}
答案 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)