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。我们不会再次进入递归案例而且我很难过。
感谢您的期待!
答案 0 :(得分:3)
您的函数的某些部分未返回值:
if len(str(result)) != 1:
print ('Entering recursion...')
return md(result,1) #<---- here