递归三要素
1 基本结束条件
2 演进
3 调用自身
整数转换为任意进制
def toStr(n,base):
convertString='123456789ABCDEF'
if n<base:
return convertString[n]
else:
return toStr(n//base,base)+convertString[n%base]
toStr(1456,16)
递归调用的实现
递归可视化:分形树
import turtle
turtle.pensize(5)
turtle.pencolor('red')
def suv(len):
if len>0:
turtle.forward(len)
turtle.right(90)
len=len-5
suv(len)
suv(100)
import turtle
def tree(len):
if len>5:
turtle.forward(len)
turtle.right(15)
tree(len-15)
turtle.left(30)
tree(len-15)
turtle.right(15)
turtle.backward(len)
turtle.left(90)
tree(90)
河内塔问题
def moveTower(height, fromPole,withPole,toPole):
if height>=1:
moveTower(height-1,fromPole,toPole,withPole)
moveDisk(height,fromPole,toPole)
moveTower(height-1,withPole,fromPole,toPole)
def moveDisk(disk,fromPole,toPole):
print(f'Moving disk[{disk}] from {fromPole} to {toPole}')
moveTower(3,'#1','#2','#3')