function :
!! hati -hati dengan mutable (list, dll) sebagai default argument !!
def foo (x, a=[])
a.append(x)
return a
foo('a')
foo('b')
expected :
['a']
['b']
what we get :
['a']
['a','b']
fix :
cara 1
def foo (x, a=None)
if a is None : a = []
a.append(x)
return a
cara 2
def foo (x, a=[], start = None)
if start is None : a = []
a.append(x)
return a
rekursif :
indirect call rekursif :
def a():
a()
def b():
b()
direct call rekursif :
def a():
a()
kekurangan rekursif :