# Recursive function homework # There are many different correct recurive answers to these problems # Problem 1: sumdigits(n) def sumdigits(n): if n//10 == 0: return n return n%10 + sumdigits(n//10) # Problem 2: biggest(L) -- there are many cleverer ways of doing this def biggest(L): return biggest_sofar(L[0],L[1:]) def biggest_sofar(biggie,rest): if rest == []: return biggie if biggie > rest[0]: return biggest_sofar(biggie,rest[1:]) return biggest_sofar(rest[0],rest[1:]) # Problem #3: ten2two(n) def ten2two(n): if n < 2: return n return ten2two(n//2)*10 + n%2 # Problem #4: baseConvert(n, inbase, outbase) def baseConvert(n,inbase,outbase): # first convert into base 10, then back out to the outbase baseten = convert_to_ten(n,inbase) return convert_from_ten(baseten,outbase) def convert_from_ten(n,outbase): if n < outbase: return n return convert_from_ten(n//outbase,outbase)*10 + n%outbase def convert_to_ten(n,inbase): if n < inbase: return n return n%10 + inbase * convert_to_ten(n//10,inbase)