Python 递归求和函数(“UnboundLocalError:赋值前引用的局部变量”)
简单的递归求和函数 它应该将一个数字的所有数字相加。例如,和(123)=1+2+3=7 它通过尾部递归工作。我取给定数字的第一个数字,并将其与其余数字之和相加Python 递归求和函数(“UnboundLocalError:赋值前引用的局部变量”),python,python-3.x,recursion,Python,Python 3.x,Recursion,简单的递归求和函数 它应该将一个数字的所有数字相加。例如,和(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(
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
语句之前定义第一位数字
您可以这样做:
def sum(num):
num_of_digits = len(str(num))
# defining first_digit before if...
first_digit = 0
if num_of_digits != 1:
# then referencing it will work
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))
在引用变量之前,必须先向其添加值。因此,在if语句之前定义first_digit
。first_digit
为单个数字时,不分配first_digit