数字根
题目
Sum of Digits / Digital Root
数字和/数字根
描述
Digital root is the recursive sum of all the digits in a number.
数字根是一个数中所有数字的递归和。
Given n, take the sum of the digits of n. If that value has more than one digit, continue reducing in this way until a single-digit number is produced. The input will be a non-negative integer.
给定n,取n的数字之和。如果n大于1位,继续这样拆分,直到产生一个单位数。输入将是非负整数。
举例
16 --> 1 + 6 = 7
942 --> 9 + 4 + 2 = 15 --> 1 + 5 = 6
132189 --> 1 + 3 + 2 + 1 + 8 + 9 = 24 --> 2 + 4 = 6
493193 --> 4 + 9 + 3 + 1 + 9 + 3 = 29 --> 2 + 9 = 11 --> 1 + 1 = 2
思路
- 首先肯定使用的递归的方式去做,为什么呢
因为只要大于1位数,处理方法都是一样的,就把这个数拆分,然后相加,然后判断,如果还是大于1位数,那么继续重复
- 确定递归三部曲
- 确定递归函数的参数和返回值
参数就是每次求和的值,返回值就是最后的求和值
def traversal(n):
- 终止条件,当传入的值为一位数的时候,就直接返回了
if n < 10:
return n
- 确定单层递归逻辑
首先将出入的值,拆分然后进行求和,然后判断是否大于1位数,如果是就进行递归
# 记录求和值
sums = 0
# 拆分n,进行求和
while n > 0:
sums += n % 10
n = n // 10
# 如果结果大于1位数,递归
if sums > 9:
sums = traversal(sums)
最终代码
def traversal(n):
# 终止条件
if n < 10:
return n
# 记录求和值
sums = 0
# 拆分n,进行求和
while n > 0:
sums += n % 10
n = n // 10
# 如果结果大于1位数,递归
if sums > 9:
sums = traversal(sums)
return sums
def digital_root(n):
sums = traversal(n)
return sums
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 活着死去
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

