例如,數字是123,答案是6.只有遞歸!如何使用遞歸法求出數字的位數[C]?
-7
A
回答
4
雖然@SamGrondahl是在正確的軌道上,不幸的是,如果你輸入一個負數它提供了意想不到的效果。這應該適用於負數:
int sumdigits(int number) {
int sign = number < 0 ? -1 : 1;
number = sign * number; // abs the number
if (number < 10)
return sign * number;
else
return sign * (number % 10 + sumdigits(number/10));
}
這將返回數字的總和,如果數字爲負數,則取反。
-1
這應該做你想要什麼:
int recurse(int number) {
if (abs(number) < 10) return number;
return number % 10 + recurse (number/10);
}
1
由於INT_MIN
的否定可能不適合於int
,所以一個正確的答案比第一眼看起來更復雜。發佈的解決方案在大多數情況下可以通過在遞歸過程中更改它們的實現來使用unsigned int
。以下是另一種選擇。
int sum_digits_recursively (char digits[], int i) {
if (i == 0 && digits[i] == '-') return -sum_digits_recursively(digits, 1);
if (digits[i] == '\0') return 0;
return (digits[i]-'0') + sum_digits_recursively(digits, i+1);
}
int sum_digits (int x) {
char digits[sizeof(x) * CHAR_BIT];
snprintf(digits, sizeof(digits), "%d", x);
return sum_digits_recursively(digits, 0);
}
相關問題
- 1. 添加數字使用遞歸在C
- 2. 如何使用遞歸增加數字?
- 3. 遞歸函數使用C#
- 4. 使用C中的遞歸在數字中反轉數字
- 5. 如何使用遞歸打印出C中所有數字範圍的排列?
- 6. c#遞歸方法參數
- 7. Java遞歸和整數雙位數字
- 8. C++遞歸:返回數字的最小偶數位
- 9. C++中使用多個數字的LCM的遞歸函數
- 10. 求和在python使用遞歸函數
- 11. C++中的遞歸:使用遞歸求解證明
- 12. 如何使用遞歸函數查找數字的平方根?
- 13. 使用遞歸函數時傳遞臨時數組的位置?
- 14. 如何使用遞歸函數(JavaScript)的
- 15. 在C中使用遞歸的位數總和
- 16. 遞歸求和找到單個數字
- 17. 如何使用遞歸求和一個數組的偶數和奇數
- 18. C++遞歸調用參數
- 19. 遞歸函數用C
- 20. 用遞歸方法在兩個數之間求和的整數
- 21. 使用遞歸編碼整數乘法函數(在C中)
- 22. c遞歸計數
- 23. C++遞歸函數
- 24. 遞歸函數C++
- 25. 遞歸計算數字的出現
- 26. 數字基數轉換遞歸方法
- 27. 如何找到所有可能的數字用遞歸方法
- 28. Xamarin遞歸定位請求
- 29. 在C中使用遞歸函數#
- 30. 在C#中使用「out參數」遞歸
歡迎來到Stack Overflow!我們喜歡幫忙,但我們希望看到你先嚐試一下。你試過了什麼,你卡在哪裏? –