如何从递归Python函数返回值?

时间:2016-08-10 20:21:02

标签: python function recursion return

这个问题看起来有点具体,为此我很抱歉,但是我很难过。我正在写自己的密码生成器,它接受一个字符串(也就是网站的URL)并将其处理成一个安全密码,该密码无法根据网站名称进行回溯。

在部分代码中,我创建了一个递归函数,如下所示:

def get_number(n = 0, nums = ''):
    for i in range(0, len(url)):
        #both n and nums are changed
    if len(nums) < num_length:
        get_number(n, nums)
    else:
        print(nums)
        return(nums)

...

print(get_number())

我希望'nums'输出两次,因为我在else块中打印并稍后打印返回。但是,如果它确实通过递归循环,则从else块打印'nums',函数返回'None'。如果第一次if len(nums) < num_length为假,则返回正确的值。

为什么它会返回'None',如果我确认它返回的对象实际上不是'None'之前的那行?

我对Python有点新手,他们会以不同的方式处理递归吗?

感谢您的时间

修改

问题已解决。忘记了递归调用的return语句。谢谢:D

1 个答案:

答案 0 :(得分:4)

我认为您在嵌套return之前错过了get_number。所以,它正在执行并返回,但你没有对递归值做任何事情。

def get_number(n = 0, nums = ''):
    for i in range(0, len(url)):
        #both n and nums are changed
    if len(nums) < num_length:
        return get_number(n, nums)

    print(nums)
    return nums