找到最后一个数字递归求和



我正在尝试创建一个函数,该函数将对所有数字
求和,并将返回汇总数字的总和。

例子:
,输入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)))


Btw
我不想用任何字符串
我想用递归,到目前为止没有运气。我敢打赌这是一个已知的数学问题,我只是不熟悉。
任何建议吗?

更短:

def getNumValue(number: int): return ((number-1) % 9) + 1

数字和总是在与原始十进制数mod 9相同的余数类中,这递归地适用,因此将其约为一位正好是除以9的余数。

1的移位仅仅是为了剩余的0类由9表示。

您可以在返回答案之前进行最后检查。

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

最新更新