数据结构与算法:递归

递归

  • 递归三要素
  • 整数转换为任意进制
  • 递归调用的实现
  • 递归可视化:分形树
  • 河内塔问题

递归三要素

1 基本结束条件
2 演进
3 调用自身

整数转换为任意进制

数据结构与算法:递归_第1张图片
数据结构与算法:递归_第2张图片
数据结构与算法:递归_第3张图片
数据结构与算法:递归_第4张图片

def toStr(n,base):
    convertString='123456789ABCDEF'
    if n

递归调用的实现

数据结构与算法:递归_第5张图片

递归可视化:分形树

数据结构与算法:递归_第6张图片
数据结构与算法:递归_第7张图片
数据结构与算法:递归_第8张图片
数据结构与算法:递归_第9张图片
数据结构与算法:递归_第10张图片

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)

数据结构与算法:递归_第11张图片
数据结构与算法:递归_第12张图片

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)       

数据结构与算法:递归_第13张图片

河内塔问题

数据结构与算法:递归_第14张图片

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')

数据结构与算法:递归_第15张图片

你可能感兴趣的:(笔记)