编写求数字根的递归方法时出现SyntaxError: invalid syntax,求排查
嘿,我帮你看看这段代码的问题哈~
问题分析与修复
你写的代码里,return那一行存在明显的语法和逻辑问题,这才导致了SyntaxError:
- 未定义变量
x:你在表达式里用到了x,但完全没给x赋值,Python根本不知道x指代什么,这是第一个错误。 - 三元表达式语法错误:Python的三元表达式格式是
结果A if 判断条件 else 结果B,你写的if x%9<10:完全不符合这个结构——既没有前置的结果,也缺少else分支,语法直接不合法。 - 缺少递归终止条件:递归必须有“停止点”,如果
num已经是单个数字了,应该直接返回它,否则会陷入无限递归。
修正后的递归代码
class Solution(object): def addDigits(self, num): """ :type num: int :rtype: int """ # 递归终止条件:如果是单个数字,直接返回 if num < 10: return num # 计算当前num的各位数字之和 digit_sum = sum(int(d) for d in str(num)) # 递归调用自身,继续处理求和后的结果 return self.addDigits(digit_sum)
额外小技巧:数学公式直接求解
这个问题其实有个数学规律(数字根公式),不用递归或循环就能一步出结果,效率更高:
class Solution(object): def addDigits(self, num): if num == 0: return 0 return num % 9 if num % 9 != 0 else 9
内容的提问来源于stack exchange,提问作者casillas
相关产品推荐
相关产品推荐

