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 :