table = [] def Karl(n): while len(table) <= n: table.append(None) if table[n] == None: if n < 10: table[n] = n else: table[n] = Karl(n-1) + 2*Karl(n-3) + 7*Karl(n/10) return table[n]