我在這個程式中遇到了一個問題,誰能告訴我,我做錯了什么,我給它輸入后程式不會顯示任何內容。(代碼是關于數字總和輸入#example 12345 = 15)
#include<stdio.h>
int sum(int num);
int sum(int num){
int total=0;
if(sum==0){
return total;
}
else{
total =num%10;
num/=10;
return sum(num);
}
}
int main()
{
int num,k;
printf("Enter 5 positive number: ");
scanf("%d",&num);
printf("Sum is: %d",sum(num));
}
uj5u.com熱心網友回復:
這是一個經驗法則,每當您有一個不間斷的遞回程式時,請嘗試驗證您的基本情況。
在這里,您驗證的sum是函式而不是num引數。C 編譯器讓您這樣做,因為 C 中的函式是指標,而指標將地址保存為數值。
uj5u.com熱心網友回復:
您只需要將條件從 更改sum==0為num==0。它現在會列印一些東西。但是,您的程式邏輯仍然是錯誤的。您可以將 sum 函式更改為此。
int sum(int num){
if(num==0) {
return 0;
}
return num % 10 sum(num/10);
}
您可以嘗試通過堆疊了解更多有關遞回的資訊,因為遞回基本上只是堆疊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/375095.html
