用递归找到最后一位数字总和
Finding the last digits sum with recursion
我正在尝试创建一个对所有数字求和的函数
并将 return 汇总数的总和。
示例:
对于 输入 getNumValue(1589)
输出 将是:5
因为:1 + 5 + 8 + 9 = 23
和 2 + 3 = 5
所以输出将是 5
因为我们不能把它拆分成更多的数字。
我确实设法创建了一个总结数字的递归函数:
def getNumValue(number: int):
if number == 0:
return 0
return (number % 10 + getNumValue(int(number / 10)))
但我似乎无法将其用于我的事业。
顺便说一句
我不想使用任何字符串
到目前为止,我一直在尝试使用递归,但没有成功。
我敢打赌这是一个我不熟悉的已知数学问题。
有什么建议吗?
您可以在返回答案之前进行最后检查。
def getNumValue(number: int):
if number == 0:
return 0
answer = (number % 10 + getNumValue(int(number // 10)))
if answer < 10:
return answer
return getNumValue(answer)
print(getNumValue(15899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999))
输出:
9
你可以检查number是否大于9,如果是,再调用函数:
def getNumValue(number: int):
if number == 0:
return 0
j=(number % 10 + getNumValue(int(number // 10)))
if j>9:
return getNumValue(j)
return j
print(getNumValue(getNumValue(1589)))
没有递归:
def getNumValue(number: int) -> int:
while True:
total = 0
while number:
total += number % 10
number //= 10
number = total
if total <= 9:
return total
>>> getNumValue(number)
5
python 递归:)
def getNumValue(number=1589):
ans = number % 10 + getNumValue(int(number / 10)) if number else 0
return getNumValue(ans) if ans > 10 else ans
输出
5
更短:
def getNumValue(number: int): return ((number-1) % 9) + 1
数字之和总是和原十进制数的余数相同class mod9,递归计算,减为一位就是除以9的余数.
移位1
只是为了让余数class0
表示为9
.
我正在尝试创建一个对所有数字求和的函数
并将 return 汇总数的总和。
示例:
对于 输入 getNumValue(1589)
输出 将是:5
因为:1 + 5 + 8 + 9 = 23
和 2 + 3 = 5
所以输出将是 5
因为我们不能把它拆分成更多的数字。
我确实设法创建了一个总结数字的递归函数:
def getNumValue(number: int):
if number == 0:
return 0
return (number % 10 + getNumValue(int(number / 10)))
但我似乎无法将其用于我的事业。
顺便说一句
我不想使用任何字符串
到目前为止,我一直在尝试使用递归,但没有成功。
我敢打赌这是一个我不熟悉的已知数学问题。
有什么建议吗?
您可以在返回答案之前进行最后检查。
def getNumValue(number: int):
if number == 0:
return 0
answer = (number % 10 + getNumValue(int(number // 10)))
if answer < 10:
return answer
return getNumValue(answer)
print(getNumValue(15899999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999))
输出:
9
你可以检查number是否大于9,如果是,再调用函数:
def getNumValue(number: int):
if number == 0:
return 0
j=(number % 10 + getNumValue(int(number // 10)))
if j>9:
return getNumValue(j)
return j
print(getNumValue(getNumValue(1589)))
没有递归:
def getNumValue(number: int) -> int:
while True:
total = 0
while number:
total += number % 10
number //= 10
number = total
if total <= 9:
return total
>>> getNumValue(number)
5
python 递归:)
def getNumValue(number=1589):
ans = number % 10 + getNumValue(int(number / 10)) if number else 0
return getNumValue(ans) if ans > 10 else ans
输出
5
更短:
def getNumValue(number: int): return ((number-1) % 9) + 1
数字之和总是和原十进制数的余数相同class mod9,递归计算,减为一位就是除以9的余数.
移位1
只是为了让余数class0
表示为9
.