簡體   English   中英

遞歸總和 function(“UnboundLocalError:賦值前引用的局部變量”)

[英]Recursive sum function (“ UnboundLocalError: local variable referenced before assignment”)

簡單的遞歸和 function。

它應該添加一個數字的所有數字。 例如 sum(123) = 1 + 2 + 3 = 7

它通過尾遞歸工作。 我取給定數字的第一個數字並將其添加到數字的 rest 的總和中。

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

你可以這樣做:

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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