小魚要學數據結構與算法(基於python)—Day7遞歸

數據結構學習筆記7(北大公開課)目錄

遞歸

在這裏插入圖片描述

一、知識概覽

遞歸知識概覽

二、實現

1、列表求和

##列表求和
#迭代法
def listSum(numList):
    theSum=0
    for i in numList:
        theSum=theSum+i
    return theSum
#print(listSum([1,3,5,7,9]))

#遞歸法
def listSum2(numList):
    if len(numList)==1:
        return numList[0]
    else:
        return numList[0]+listSum2(numList[1:])
#print(listSum2([1,3,5,7,9]))

2、整數轉化爲任意進制

##整數轉換爲任意進制
def toStr(n,base):
    convertString="0123456789ABCDEF"
    if n<base:
        return convertString[n]
    else:
        return toStr(n//base,base)+convertString[n%base]
print(toStr(1453,16))
print(toStr(10,2))

3、遞歸深度限制

import sys
sys.getrecursionlimit()#默認1000
sys.setrecursionlimit(3000)#自定義設置
sys.getrecursionlimit()

三、可視化程序

##遞歸可視化
import turtle
t=turtle.Turtle()
#作圖開始
#直線
t.forward(100)
#方形
for i in range(4):
    t.forward(100)
    t.right(90)
#五角星
t.pencolor('red')
t.pensize(3)
for i in range(5):
    t.forward(100)
    t.right(144)
t.hideturtle()
#螺線
def drawSpiral(t,lineLen):
    if lineLen>0:
        t.forward(lineLen)
        t.right(90)
        drawSpiral(t,lineLen-5)
drawSpiral(t,100)
#作圖結束
turtle.done()

#分形樹
def tree(branch_len):
    if branch_len>5:
        t.forward(branch_len)
        t.right(20)
        tree(branch_len-15)
        t.left(40)
        tree(branch_len-15)
        t.right(20)
        t.backward(branch_len)
t=turtle.Turtle()
t.left(90)
t.penup()
t.backward(100)
t.pendown()
t.pencolor('green')
t.pensize(2)
tree(75)
t.hideturtle()
turtle.done()

四、可視化結果

畫條直線!
在這裏插入圖片描述
畫個方框!在這裏插入圖片描述
畫顆星星!在這裏插入圖片描述
畫團蚊香!
在這裏插入圖片描述
畫棵小樹!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章