递归三定律
- 递归算法必须有一个基本结束条件(最小规模问题的直接解决)
- 递归算法必须能改变状态向基本结束条件演进(减小问题规模)
- 递归算法必须调用自身(解决减小了规模的相同问题)
递归求和
def listSum(mylist):
if len(mylist) == 2: # 或 1
return mylist[0] + mylist[1]
else:
return mylist[0] + listSum(mylist[1:])
l1 = [1, 2, 3, 4]
print(listSum(l1))
进制转换
ref = "0123456789ABCDEF"
def toStr(n, base):
if n < base: # 这就是最小规模,通过打表就能获得结果
return ref[n]
else: # 分解成余数和商,余数肯定是最下规模
temp = n % base
n = n // base
return toStr(n, base) + temp # 注意顺序
print(toStr(123, 16))