Python递归赋值错误

时间:2016-02-29 05:59:18

标签: python recursion

这是我的代码:

def prifact(n):
    if n == 0:
        return []

    def prifactHelper(x):
        if x == 1:
            return []
        else:
            for i in range(2,x+1):
                if x % i == 0:
                    return [i] + prifactHelper(x/i)

    return prifactHelper(n)

这是我的错误:

local variable 'prifactHelper' referenced before assignment

我已经正确定义了“prifactHelper”函数,所以我无法弄清楚发生了什么。

更新

代码工作正常,显然我有一个缩进错误,我在将代码解析为Stack Overflow时更正了。

1 个答案:

答案 0 :(得分:0)

def prifact(n):
    if n == 0:
    return []

    def prifactHelper(x):
        if x == 1:
            return []
        else:
            for i in range(2, int(x+1)):
                if x % i == 0:
                    return [i] + prifactHelper(x/i)

    return prifactHelper(n)

if __name__ == '__main__':
    print(prifact(10))

输出[2, 5]。但是,您需要使用整数调用range,否则您有可能获得TypeError: 'float' object cannot be interpreted as an integer。所以请致电range(2, int(x+1)),而不仅仅是range(2, x+1)