带有列表的Python递归返回None

new*_*man 12 python recursion list

def foo(a):
    a.append(1)
    if len(a) > 10:
        print a
        return a
    else:
        foo(a)
Run Code Online (Sandbox Code Playgroud)

为什么这个递归函数返回None(参见下面的记录)?我不太明白我做错了什么.

In [263]: x = []

In [264]: y = foo(x)
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

In [265]: print y
None

Ign*_*ams 16

你不会在else条款中返回任何内容:

    else:
        return foo(a)
Run Code Online (Sandbox Code Playgroud)