返回
Go, Swift, Python, Java - 反复相加,终成个位数!
IOS
2023-09-21 02:34:57
在编程中,我们经常会遇到需要对数字进行处理的情况。比如,计算一个数的各位数字之和,或者将一个数拆分成它的各个位数字。今天,我们就来介绍一个有趣的算法问题:给定一个非负整数,反复将各个位上的数字相加,直到结果为一位数。我们来看看这个问题的不同语言解法吧!
**Go**
```go
func addDigits(num int) int {
if num < 10 {
return num
}
sum := 0
for num > 0 {
sum += num % 10
num /= 10
}
return addDigits(sum)
}
Swift
func addDigits(_ num: Int) -> Int {
if num < 10 {
return num
}
var sum = 0
var n = num
while n > 0 {
sum += n % 10
n /= 10
}
return addDigits(sum)
}
Python
def add_digits(num):
if num < 10:
return num
sum = 0
while num > 0:
sum += num % 10
num //= 10
return add_digits(sum)
Java
class Solution {
public int addDigits(int num) {
if (num < 10) {
return num;
}
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return addDigits(sum);
}
}
这些代码都使用了递归的方法来解决这个问题。首先,我们检查数字是否已经是一位数。如果是,则直接返回该数字。否则,我们将数字的各个位上的数字相加,得到一个新的数字。然后,我们对这个新的数字重复这个过程,直到得到一位数。
这个问题还有另一种解决方法,那就是使用循环。我们可以使用一个循环来不断地将数字的各个位上的数字相加,直到得到一位数。这种方法虽然没有递归方法简洁,但是更容易理解。
希望这篇文章对您有所帮助!如果您还有其他问题,欢迎随时提问。
练习题
- 给定一个正整数,计算其各位数字之和。
- 将一个正整数拆分成它的各个位数字。
- 给定一个正整数,计算其各位数字之积。
答案
- 可以使用循环或递归的方法来计算各位数字之和。
- 可以使用循环或递归的方法来将一个正整数拆分成它的各个位数字。
- 可以使用循环或递归的方法来计算各位数字之积。
延伸阅读