我有一個程序使用尾遞歸函數來添加輸入值和所有以前的值。例如,如果用戶輸入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