为什么这段代码在Python 2中没有返回?但是,如果我将return语句替换为print语句,即函数本身的print sum,它会给出正确的答案。为什么会这样?我知道这是一个愚蠢的问题,但我无法自己解决这个问题。
import math
n=int(raw_input().strip())
temp = [5]
arr=[]
def cal(arr):
arr.append(int(math.floor(temp[-1]/2)))
temp.append(arr[-1]*3)
if len(arr)==n:
return sum(arr)
cal(arr)
print cal(arr)
答案 0 :(得分:3)
你需要
return cal(arr)
否则函数将以递归方式调用自身并默认返回None
(而不是计算结果)。
答案 1 :(得分:2)
该函数的结尾应为
if len(arr)==n:
return sum(arr)
else:
return cal(arr)
不应该吗?如果函数结束而没有返回值,则将None
作为返回值。