【发布时间】:2020-12-30 05:09:10
【问题描述】:
简单的递归求和函数。
它应该添加一个数字的所有数字。例如 sum(123) = 1 + 2 + 3 = 7
它通过尾递归工作。我取给定数字的第一个数字并将其添加到其余数字的总和中。
def sum(num):
num_of_digits = len(str(num))
if num_of_digits != 1:
first_digit = int(num / pow(10, num_of_digits - 1))
rest = num - int(num / pow(10, num_of_digits - 1)) * pow(10, num_of_digits - 1)
return first_digit + sum(rest)
else:
return first_digit
print(sum(123))
错误
UnboundLocalError: local variable 'first_digit' referenced before assignment
我的问题是为什么代码不起作用?
【问题讨论】:
-
在引用它之前,您必须向变量添加一个值。所以在 if 语句之前定义
first_digit。 -
first_digit在num为单个数字时未分配
标签: python python-3.x recursion