我需要撰寫一個遞回函式,該函式將對給定數字的所有數字求和,但最右邊的數字除外。例如:56643 -> 5 6 6 4 = 21
或者如果數字是 5:總和將為 0,因為我們不會對正確的數字求和(在這個例子中它也是我們唯一的數字)。
我嘗試撰寫遞回函式,但沒有成功。
int sumDig(int num) {
if (num < 10)
return 0;
return (num % 10 sumDig(num / 10));
}
謝謝大家
uj5u.com熱心網友回復:
您撰寫的函式將列印 num 除第一位數字之外的所有數字的總和,這與您想要實作的相反。考慮以下功能:-
int sumDig(int num) {
if (num > 0)
return (num % 10 sumDig(num / 10));
else
return 0;
}
您可以直接呼叫此函式num/10來實作您的用例。或者,您可以使用包裝函式。
uj5u.com熱心網友回復:
因為基本情況是num<10,所以您實際上是在添加除最高有效數字之外的所有數字。
要獲取除最后一個之外的所有內容,可以通過讓函式獲取倒數第二個數字并將其添加到遞回呼叫的結果中來完成。
int sumDig(int num) {
if (num == 0) {
return 0;
}
return ((num / 10) % 10) sumDig(num / 10);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379104.html
