为什么在我的python代码中打印出“无”

时间:2015-08-03 19:18:11

标签: python

嗨:我正在测试这样的递归函数:

def countdown(n):
    if n == 1:
        print 1
    elif n > 1:
        print countdown(n - 1), '\n', n
    else:
        pass

该功能是从$ n $倒计数到$ 1 $。但为什么我在输出中得到'无'?

In [2]: countdown(4)
1
None  
2
None 
3
None 
4

谢谢。

3 个答案:

答案 0 :(得分:3)

当函数完成而没有返回任何内容时,它会隐式返回None。您的函数没有return语句,因此print countdown(n-1)将打印None

答案 1 :(得分:2)

您正在打印countdown返回的内容,但它不会返回任何内容。

答案 2 :(得分:2)

您的递归函数没有return语句。因为函数总是必须返回一些东西,所以默认是返回None

从递归函数调用中删除print语句,并将其放在单独的行中:

elif n > 1:
    countdown(n - 1)
    print n

请注意,else: pass块完全是多余的。您可以省略该部分,但