In [1]:
# a function can call itself.
seq = range(10)
seq
Out[1]:
In [2]:
s = 0
for i in seq:
s += i
s
Out[2]:
In [3]:
def seq_sum(seq):
if not seq:
return 0
else:
return seq[0] + seq_sum(seq[1:])
seq_sum(seq)
Out[3]:
In [7]:
def seq_sum(seq):
print 'In seq_sum with %s' % str(seq)
if not seq:
print 'Exiting seq_sum with 0'
return 0
else:
print 'First element of seq is %g' % seq[0]
print 'Calling seq_sum with %s' % str(seq[1:])
ss = seq_sum(seq[1:])
print 'Returned from seq_sum of %s, got %g' % (str(seq[1:]), ss)
result = seq[0] + ss
print 'Adding %g to %g gives %g' % (seq[0], ss, result)
print 'Returning %g from seq_sum' % result
return result
seq = [1, 2]
seq_sum(seq)
Out[7]: