簡體   English   中英

遞歸-SyntaxError:語法無效

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM