日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

python 递归

發布時間:2024/1/4 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 python 递归 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遞歸的三定律

遞歸算法必須具有基本情況。
遞歸算法必須改變其狀態并向基本情況靠近。
遞歸算法必須以遞歸方式調用自身。

整數轉換為任意進制字符串

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

棧幀:實現遞歸字符串轉換器

from pythonds.basic.stack import Stack

rStack = Stack()

def toStr(n,base):
    convertString = "0123456789ABCDEF"
    while n > 0:
        if n < base:
            rStack.push(convertString[n])
        else:
            rStack.push(convertString[n % base])
        n = n // base
    res = ""
    while not rStack.isEmpty():
        res = res + str(rStack.pop())
    return res

print(toStr(1453,16))

可視化遞歸

import turtle

myTurtle = turtle.Turtle()
myWin = turtle.Screen()

def drawSpiral(myTurtle, lineLen):
    if lineLen > 0:
        myTurtle.forward(lineLen)
        myTurtle.right(90)
        drawSpiral(myTurtle,lineLen-5)

drawSpiral(myTurtle,100)
myWin.exitonclick()

import turtle

def tree(branchLen,t):
    if branchLen > 5:
        t.forward(branchLen)
        t.right(20)
        tree(branchLen-15,t)
        t.left(40)
        tree(branchLen-15,t)
        t.right(20)
        t.backward(branchLen)

def main():
    t = turtle.Turtle()
    myWin = turtle.Screen()
    t.left(90)
    t.up()
    t.backward(100)
    t.down()
    t.color("green")
    tree(75,t)
    myWin.exitonclick()

main()

謝爾賓斯基三角形

import turtle

def drawTriangle(points,color,myTurtle):
    myTurtle.fillcolor(color)
    myTurtle.up()
    myTurtle.goto(points[0][0],points[0][1])
    myTurtle.down()
    myTurtle.begin_fill()
    myTurtle.goto(points[1][0],points[1][1])
    myTurtle.goto(points[2][0],points[2][1])
    myTurtle.goto(points[0][0],points[0][1])
    myTurtle.end_fill()

def getMid(p1,p2):
    return ( (p1[0]+p2[0]) / 2, (p1[1] + p2[1]) / 2)

def sierpinski(points,degree,myTurtle):
    colormap = ['blue','red','green','white','yellow',
                'violet','orange']
    drawTriangle(points,colormap[degree],myTurtle)
    if degree > 0:
        sierpinski([points[0],
                        getMid(points[0], points[1]),
                        getMid(points[0], points[2])],
                   degree-1, myTurtle)
        sierpinski([points[1],
                        getMid(points[0], points[1]),
                        getMid(points[1], points[2])],
                   degree-1, myTurtle)
        sierpinski([points[2],
                        getMid(points[2], points[1]),
                        getMid(points[0], points[2])],
                   degree-1, myTurtle)

def main():
   myTurtle = turtle.Turtle()
   myWin = turtle.Screen()
   myPoints = [[-100,-50],[0,100],[100,-50]]
   sierpinski(myPoints,3,myTurtle)
   myWin.exitonclick()

main()

漢諾塔游戲

def hanoi(n,x,y,z):
    if n==1:
        print(x,'-->',z)
    else:
        hanoi(n-1,x,z,y)#將前n-1個盤子從x移動到y上
        hanoi(1,x,y,z)#將最底下的最后一個盤子從x移動到z上
        hanoi(n-1,y,x,z)#將y上的n-1個盤子移動到z上
n=int(input('請輸入漢諾塔的層數:'))
hanoi(n,'x','y','z')

探索迷宮問題

def searchFrom(maze, startRow, startColumn):
    maze.updatePosition(startRow, startColumn)
   #  Check for base cases:
   #  1. We have run into an obstacle, return false
   if maze[startRow][startColumn] == OBSTACLE :
        return False
    #  2. We have found a square that has already been explored
    if maze[startRow][startColumn] == TRIED:
        return False
    # 3. Success, an outside edge not occupied by an obstacle
    if maze.isExit(startRow,startColumn):
        maze.updatePosition(startRow, startColumn, PART_OF_PATH)
        return True
    maze.updatePosition(startRow, startColumn, TRIED)

    # Otherwise, use logical short circuiting to try each
    # direction in turn (if needed)
    found = searchFrom(maze, startRow-1, startColumn) or 
            searchFrom(maze, startRow+1, startColumn) or 
            searchFrom(maze, startRow, startColumn-1) or 
            searchFrom(maze, startRow, startColumn+1)
    if found:
        maze.updatePosition(startRow, startColumn, PART_OF_PATH)
    else:
        maze.updatePosition(startRow, startColumn, DEAD_END)
    return found

參考:https://facert.gitbooks.io/python-data-structure-cn/4.%E9%80%92%E5%BD%92/4.11.%E6%8E%A2%E7%B4%A2%E8%BF%B7%E5%AE%AB/

總結

以上是生活随笔為你收集整理的python 递归的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产综合一区二区 | 第四色影音先锋 | 日韩免费在线视频 | 亚洲美女黄色 | 女生喷液视频 | 制服.丝袜.亚洲.中文.综合懂 | 精品一区av | 蜜桃视频网站 | 亚洲天堂精品视频 | 婷婷九月丁香 | www.在线视频 | av在线免 | 久草福利网| bt天堂av | 亚洲顶级毛片 | av先锋影音| 国产亚洲一区二区不卡 | 天堂网一区二区 | 无码视频在线观看 | 亚洲国产视频一区二区 | 麻豆综合 | 日韩动漫av| 亚洲国产精品无码久久久 | 第四色视频| 国产91影院 | av在线不卡网| 国产av一区不卡 | 日韩免费成人av | 色在线视频 | 国产欧美日韩综合精品一区 | 亚洲 欧美 日韩 在线 | 日本中文字幕不卡 | 欧美乱码精品一区二区三区 | 超碰人人插 | 免费在线观看小视频 | 中文字幕一区二区三区av | 欧美性受xxxx黑人xyx性爽 | 久久天堂av | 伊伊综合网 | 天堂网站| 欧美伦理在线观看 | 欧美群交射精内射颜射潮喷 | 四虎成人在线 | 久久久一二三区 | 亚洲第一福利网站 | 丰满的女邻居 | 天天操天天操天天射 | 少妇淫片| 日韩亚洲欧美一区 | 草草影院在线播放 | 黄色av免费网站 | 91网站在线免费看 | 亚洲精品黄色片 | 午夜亚洲精品 | 久久露脸国语精品国产 | 国产91绿帽单男绿奴 | 欧美女优在线观看 | 蜜桃臀一区二区三区 | 色一情一乱一区二区三区 | 亚洲黄色大全 | 处女朱莉 | 国产精品对白 | 日本大尺度吃奶做爰视频 | 在线看片中文字幕 | 奶水旺盛的女人伦理 | 欧美激情一区二区三区四区 | 天天草比 | 男女黄床上色视频免费的软件 | 手机成人av | 国产精品人人妻人人爽人人牛 | 在线免费亚洲 | 亚洲一区自拍 | 日韩一卡二卡三卡四卡 | 亚洲免费视频一区二区三区 | 国产激情在线看 | av短片| 97伊人久久 | 日本美女一区二区 | 日韩毛片一级 | 国产精品香蕉在线 | 综合色av| 污视频在线观看免费 | 日日日干干干 | 91中文字幕视频 | 日本三级吃奶头添泬无码苍井空 | 成年人毛片 | 色综合99久久久无码国产精品 | 乳女教师の诱惑julia | 蜜桃av在线看| 老熟妇仑乱一区二区视频 | 国产成人精品午夜福利Av免费 | 日本中文字幕视频 | 激情狠狠| 国产精品久久伊人 | 日韩在线中文 | 五月婷婷深爱 | 亚洲精品一区二区三区四区乱码 | 中文文字幕文字幕高清 | 国产嫩草影院久久久久 |