Python函数返回None,即使可以打印变量

时间:2017-11-27 23:40:36

标签: python python-3.x function recursion return

Heyo!

这是我遇到的一个奇怪的问题。我的函数目标是重复N次k次,将这些数字加在一起,然后继续添加这些数字,直到数字的长度为1。

这是功能:

def md(N,k):
    p = list()
    for i in range(0,k):
        p.append(list(map(int,str(N))))
        to_add = list(itertools.chain(*p))
    print ('List made:', to_add)
    result = sum(to_add)
    print ('Result found:', result, 'len:', len(str(result)))

    if len(str(result)) != 1:
        print ('Entering recursion...')
        md(result,1)
    else:
        print ('I should return:',result)
        ans = result
        return ans

该功能的输出如下:

List made: [3, 2, 1, 3, 2, 1, 3, 2, 1]
Result found: 18 len: 2
Entering recursion...
List made: [1, 8]
Result found: 9 len: 1
I should return: 9

如您所见,结果就是我正在寻找的答案。结果在else语句中定义,并且可以打印。但是,return语句只返回None。我们不会再次进入递归案例而且我很难过。

感谢您的期待!

1 个答案:

答案 0 :(得分:3)

您的函数的某些部分未返回值:

if len(str(result)) != 1:
    print ('Entering recursion...')
    return md(result,1)    #<----  here