// 這是一個遞回函式,用于在 C 語言中查找數字總和 // 我的 IDE 中沒有任何輸出。
int dsum(int n)
{
int a, r;
r = n % 10;
a = r dsum(n / 10);
return a;
}
int main()
{
int a;
a= dsum(12345);
printf("%d",a);
return 0;
}
uj5u.com熱心網友回復:
遞回函式應該總是有一個基本情況作為最終回傳,在這種情況下,當 n 等于 0 時,這意味著所有數字都被求和(當 msb 數字除以 10 時,結果為 0)。然后你將有回傳值,它將使用當前 lsb 數字(或最右邊的數字)的結果呼叫函式 輸入 n/10 的函式結果
int dsum(int n)
{
if (n == 0) {
return 0;
}
return n % 10 dsum(n / 10);
}
int main()
{
int a;
a = dsum(12345);
printf("%d",a);
return 0;
}
順便說一句,我還建議深入研究尾遞回:https ://en.wikipedia.org/wiki/Tail_call
在這種情況下,它可能看起來像這樣:
int dsum_tail_recursion(int n, int sum)
{
if (n == 0) {
return sum;
}
return dsum_tail_recursion(n/10, n%10 sum)
}
int main()
{
int a;
a = dsum_tail_recursion(12345, 0); // 0 is the sum start value
printf("%d",a);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/334911.html
上一篇:無法理解這個遞回函式是如何計算的
