14
def foo(a):
    a.append(1)
    if len(a) > 10:
        print a
        return a
    else:
        foo(a)

Why this recursive function returns None (see transcript below)? I can't quite understand what I am doing wrong.

In [263]: x = []

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

In [265]: print y
None
SilentGhost
  • 307,395
  • 66
  • 306
  • 293
newman
  • 143
  • 1
  • 4

1 Answers1

20

You don't return anything in the else clause:

    else:
        return foo(a)
Ignacio Vazquez-Abrams
  • 776,304
  • 153
  • 1,341
  • 1,358