函数返回none而不是list的总和

时间:2016-10-31 19:45:02

标签: python

为什么这段代码在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)

2 个答案:

答案 0 :(得分:3)

你需要

return cal(arr)

否则函数将以递归方式调用自身并默认返回None(而不是计算结果)。

答案 1 :(得分:2)

该函数的结尾应为

if len(arr)==n:
    return sum(arr)
else:    
    return cal(arr)
不应该吗?如果函数结束而没有返回值,则将None作为返回值。