[英]Recursion - SyntaxError: invalid syntax
我正在嘗試編寫如下的遞歸方法,但是我遇到了SyntaxError:語法無效,我想知道我在做什么錯
給定一個非負整數num,請重復加所有數字,直到結果只有一位。
例如:
給定num = 38,過程類似於:3 + 8 = 11,1 + 1 =2。由於2只有一位,請返回。
class Solution(object):
def addDigits(self, num):
"""
:type num: int
:rtype: int
"""
return self.addDigits(x=sum(i for i in str(num)) if x%9<10:
注意:我正在學習python中的遞歸,因此,我不希望知道如何解決問題,而是希望了解自己在實現中做錯了什么。
更新以匹配新的問題描述:
def add_digits(x):
return (x - 1) % 9 + 1 if x else 0
如果應用此解決方案的蠻力版本(您最初嘗試的版本),那么您將看到輸出實際上是此處列出的序列: https : //oeis.org/A010888 。
一旦知道這是一個重復序列,便可以在序列中尋找模式,在這種情況下,我們意識到此答案中的函數可提供O(1)時空的有保證的解決方案。
您實際上可以通過在此處查看此序列來查看與n % 9
的關系: https : //oeis.org/A010878
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.