我有一个程序使用尾递归函数来添加输入值和所有以前的值。例如,如果用户输入3,则函数计算3 + 2 + 1并得到6的答案。但是,这只有时才有效。添加值的递归函数正在输出异常值
这里是我下面的代码:
int addNum(int n);
int main(int argc, char *argv[]) {
int num;
printf("Enter an integer greater than zero, (q to quit): \n");
while(scanf("%d", &num) > 0){
if(num < 0){
continue;
}
else if(num == 0){
printf("Answer = 0 \n");
}
else{
printf("Answer = %d \n", addNum(num));
}
printf("Enter a positive number: \n");
}
return 0;
}
int addNum(int n){
int answer;
if(n > 0){
answer = n += addNum(n - 1);
}
return answer;
}
我从这个代码得到的输出是非常奇特的。对于数字0-6我得到正确的答案。一旦我得到7和8两个答案都是不正确的。我继续前进,9-12的答案再次正确。然后13和14是不正确的。它保持这样回去和第四。如果有人能帮忙,我完全不知道发生了什么。如果这是我的代码的简单和错误,请不要给我答案,而是提示问题。
我将在下面发布输出,以便您可以看到发生了什么。我决定为我的输出使用pastebin来节省空间。 http://pastebin.com/DjJfxJAT
启用编译器警告... – Lundin