遞歸
一、知識概覽
二、實現
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()
四、可視化結果
畫條直線!
畫個方框!
畫顆星星!
畫團蚊香!
畫棵小樹!