Voorbeelden van recursie¶
power(b, p)¶
def power(b, p):
"""Geeft b tot de macht p, voor een geheel getal p."""
if p == 0: # basisgeval
return 1
elif p < 0: # dit is optioneel
return 1.0 / power(b, -p)
else: # recursief geval
return b * power(b, p - 1)
add(m, n)¶
def add(m, n):
"""Geeft m + n door n keer 1 op te tellen; n is 0 of groter."""
if n == 0: # basisgeval
return m
else: # recursief geval
return add(m, n - 1) + 1
leng(s)¶
def leng(s):
"""Geeft de lengte van de string of lijst s, net als de ingebouwde len(s)."""
if s == "" or s == []: # basisgeval: een lege string of een lege lijst
return 0
else: # recursief geval
return 1 + leng(s[1:])
vwl(s)¶
def vwl(s):
"""Geeft het aantal klinkers in de string s; hier telt de y mee."""
if s == "": # basisgeval
return 0 # geen klinkers in de lege string
elif s[0] in "aeiouy": # recursief geval
return 1 + vwl(s[1:])
else: # recursief geval
return 0 + vwl(s[1:]) # De 0 + is niet nodig maar ziet er mooier uit
mymax(L)¶
def mymax(L):
"""Geeft het grootste element van L, net als de ingebouwde max; L is niet leeg."""
if len(L) == 1: # basisgeval
return L[0]
elif L[0] < L[1]: # recursief geval
return mymax(L[1:]) # de eerste vervalt
else: # recursief geval
return mymax(L[0:1] + L[2:]) # de tweede vervalt
zeroest(L)¶
def zeroest(L):
"""Geeft het element van L dat het dichtst bij 0 ligt; L is niet leeg."""
if len(L) == 1: # basisgeval
return L[0]
z = zeroest(L[1:]) # welke is het dichtst bij nul in de rest van L?
if abs(L[0]) < abs(z):
return L[0] # L[0] was dichter bij nul!
else:
return z # z was dichter bij nul!
reverse(s)¶
def reverse(s):
"""Geeft de string s achterstevoren; s is niet leeg."""
if len(s) == 1: # basisgeval
return s
else: # recursief geval
return reverse(s[1:]) + s[0]