最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python遞歸算法(無(wú)限遞歸,正常遞歸,階乘)

 更新時(shí)間:2024年02月29日 08:26:57   作者:敲代碼敲到頭發(fā)茂密  
本文主要介紹了python遞歸算法,包含無(wú)限遞歸,正常遞歸,階乘等,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、嵌套調(diào)用的過(guò)程

def show1():
    print("show 1 run start")
    show2()
    print("show 1 run end")


def show2():
    print("show 2 run start")
    show3()
    print("show 2 run end")


def show3():
    print("show 3 run start")
    print("show 3 run end")


show1()

執(zhí)行結(jié)果

show 1 run start
show 2 run start
show 3 run start
show 3 run end
show 2 run end
show 1 run end

嵌套調(diào)用的過(guò)程圖解

在這里插入圖片描述

函數(shù)一旦執(zhí)行結(jié)束,一會(huì)先回到調(diào)用處

二、遞歸的基本原則

1、遞歸的基本原則

遞歸函數(shù)通常遵循以下原則:

  • 定義基本情況:確定一個(gè)或多個(gè)輸入的特殊情況,當(dāng)滿足這些條件時(shí),遞歸函數(shù)將直接返回結(jié)果而不再調(diào)用自身。
  • 減小問(wèn)題規(guī)模:通過(guò)調(diào)用自身來(lái)解決一個(gè)規(guī)模更小的問(wèn)題,這樣每次遞歸調(diào)用都在問(wèn)題規(guī)模上取得了進(jìn)展。也就是需要一個(gè)已定義好的規(guī)則來(lái)使其它非基本的情況轉(zhuǎn)化為基本情況。
  • 終止條件:遞歸函數(shù)必須包含能夠?qū)е潞瘮?shù)不再遞歸調(diào)用的條件,以避免無(wú)限遞歸。

2、無(wú)限遞歸調(diào)用

def show():
    print("show run start")
    show()
    print("show run end")

show()

無(wú)限遞歸調(diào)用報(bào)錯(cuò)
RecursionError: maximum recursion depth exceeded while calling a Python object

在這里插入圖片描述

在這里插入圖片描述

3、正常遞歸調(diào)用

def show(n):
    print(f"show run start-{n}")
    if n<10:
        show(n+1)
    print(f"show run end-{n}")

show(1)

遞歸函數(shù)同嵌套函數(shù)調(diào)用一樣:誰(shuí)調(diào)用的你,返回到調(diào)用處

show run start-1
show run start-2
show run start-3
show run start-4
show run start-5
show run start-6
show run start-7
show run start-8
show run start-9
show run start-10
show run end-10
show run end-9
show run end-8
show run end-7
show run end-6
show run end-5
show run end-4
show run end-3
show run end-2
show run end-1

進(jìn)程已結(jié)束,退出代碼為 0

當(dāng)代碼執(zhí)行到24行時(shí),先恢復(fù)show(9)的狀態(tài)
show(9)是由show(8)的調(diào)用的,先恢復(fù)show(8)的狀態(tài)
依次

在這里插入圖片描述

在這里插入圖片描述

與嵌套函數(shù)調(diào)用過(guò)程相比:嵌套函數(shù)是由多個(gè)函數(shù)完成的,遞歸是有1個(gè)函數(shù)完成的

4、階乘問(wèn)題

def f(n):
    if n==0 or n==1:
        return 1
    return n*f(n-1)


print(f(5))

執(zhí)行流程:

5 * f(4)
5 * (4 * f(3))
5 * (4 * (3 * f(2)))
5 * (4 * (3 * 2 * f(1))))
5 * (4 * (3 * 2 * 1))
5 * (4 * (3 * 2))
5 * (4 * 6)
5 * 24
120

5、力扣:231. 2 的冪

簡(jiǎn)單

給你一個(gè)整數(shù) n,請(qǐng)你判斷該整數(shù)是否是 2 的冪次方。如果是,返回 true ;否則,返回 false 。
如果存在一個(gè)整數(shù) x 使得 n == 2x ,則認(rèn)為 n 是 2 的冪次方。

示例 1:
輸入:n = 1
輸出:true
解釋:20 = 1

示例 2:
輸入:n = 16
輸出:true
解釋:24 = 16

示例 3:
輸入:n = 3
輸出:false
示例 4:
輸入:n = 4
輸出:true

示例 5:
輸入:n = 5
輸出:false

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        def panduan(s):
            if s <= 0:
                return False
            elif s == 1:
                return True
            elif s == 2:
                return True
            else:
                if s % 2 == 0:
                    return panduan(s // 2)
                else:
                    return False
        return panduan(n)

6、力扣面試題 08.05. 遞歸乘法

中等

遞歸乘法。 寫一個(gè)遞歸函數(shù),不使用 * 運(yùn)算符, 實(shí)現(xiàn)兩個(gè)正整數(shù)的相乘??梢允褂眉犹?hào)、減號(hào)、位移,但要吝嗇一些。
示例1:
輸入:A = 1, B = 10
輸出:10

示例2:
輸入:A = 3, B = 4
輸出:12
提示:
保證乘法范圍不會(huì)溢出

class Solution:
    def multiply(self, A: int, B: int) -> int:
        if B == 0:
            return 0
        return A + self.multiply(A, B - 1)

r=Solution()
A=3
B=4
print(r.multiply(A, B))

執(zhí)行流程

3+multiply(3, 3)
6+multiply(3, 2)
9+multiply(3, 1)
12+multiply(3, 0)

7、力扣、326. 3 的冪

簡(jiǎn)單

給定一個(gè)整數(shù),寫一個(gè)函數(shù)來(lái)判斷它是否是 3 的冪次方。如果是,返回 true ;否則,返回 false 。
整數(shù) n 是 3 的冪次方需滿足:存在整數(shù) x 使得 n == 3x

示例 1:
輸入:n = 27
輸出:true

示例 2:
輸入:n = 0
輸出:false

示例 3:
輸入:n = 9
輸出:true

示例 4:
輸入:n = 45
輸出:false

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        def panduan(s):
            if s <= 0:
                return False
            elif s == 1:
                return True
            elif s % 3 != 0:
                return False
            else:
                return panduan(s / 3)

        return panduan(n)


r=Solution()
n=9
print(r.isPowerOfTwo(n))

8、力扣342. 4的冪

簡(jiǎn)單

給定一個(gè)整數(shù),寫一個(gè)函數(shù)來(lái)判斷它是否是 4 的冪次方。如果是,返回 true ;否則,返回 false 。
整數(shù) n 是 4 的冪次方需滿足:存在整數(shù) x 使得 n == 4x

示例 1:
輸入:n = 16
輸出:true

示例 2:
輸入:n = 5
輸出:false

示例 3:
輸入:n = 1
輸出:true

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        def panduan(s):
            if s <= 0:
                return False
            elif s == 1:
                return True
            elif s % 4 != 0:
                return False
            else:
                return panduan(s // 4)

        return panduan(n)


r=Solution()
n=1
print(r.isPowerOfTwo(n))

到此這篇關(guān)于python遞歸算法(無(wú)限遞歸,正常遞歸,階乘)的文章就介紹到這了,更多相關(guān)python遞歸算法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Python自然語(yǔ)言處理之詞干,詞形與最大匹配算法代碼詳解

    Python自然語(yǔ)言處理之詞干,詞形與最大匹配算法代碼詳解

    這篇文章主要介紹了Python自然語(yǔ)言處理之詞干,詞形與MaxMatch算法代碼詳解,涉及詞干提取,詞形還原,簡(jiǎn)單總結(jié)了二者的區(qū)別和聯(lián)系,最后還分享了最大匹配算法的相關(guān)示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Pytorch實(shí)現(xiàn)GoogLeNet的方法

    Pytorch實(shí)現(xiàn)GoogLeNet的方法

    今天小編就為大家分享一篇Pytorch實(shí)現(xiàn)GoogLeNet的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • python讀取.mat文件及將變量存為.mat文件的詳細(xì)介紹

    python讀取.mat文件及將變量存為.mat文件的詳細(xì)介紹

    這篇文章主要給大家介紹了關(guān)于python讀取.mat文件及將變量存為.mat文件的詳細(xì)介紹,?mat文件是matlab的數(shù)據(jù)存儲(chǔ)的標(biāo)準(zhǔn)格式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • centos6.7安裝python2.7.11的具體方法

    centos6.7安裝python2.7.11的具體方法

    下面小編就為大家?guī)?lái)一篇centos6.7安裝python2.7.11的具體方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • Python 僅獲取響應(yīng)頭, 不獲取實(shí)體的實(shí)例

    Python 僅獲取響應(yīng)頭, 不獲取實(shí)體的實(shí)例

    今天小編就為大家分享一篇Python 僅獲取響應(yīng)頭, 不獲取實(shí)體的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • python pytorch中.view()函數(shù)的用法解讀

    python pytorch中.view()函數(shù)的用法解讀

    這篇文章主要介紹了python pytorch中.view()函數(shù)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python字符串對(duì)其居中顯示的方法

    python字符串對(duì)其居中顯示的方法

    這篇文章主要介紹了python字符串對(duì)其居中顯示的方法,涉及Python打印輸出顯示的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • conda將python低版本環(huán)境升級(jí)到高版本的完整步驟

    conda將python低版本環(huán)境升級(jí)到高版本的完整步驟

    這篇文章主要給大家介紹了關(guān)于conda將python低版本環(huán)境升級(jí)到高版本的完整步驟,包括激活環(huán)境、升級(jí)Python版本、驗(yàn)證升級(jí)、處理依賴問(wèn)題和測(cè)試環(huán)境等步驟,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • python 中if else 語(yǔ)句的作用及示例代碼

    python 中if else 語(yǔ)句的作用及示例代碼

    python中的if-else語(yǔ)句是一個(gè)判斷性語(yǔ)句,既然是判斷就要有條件以及滿足條件與不滿足的情況,一下將講解一些if-else語(yǔ)句的知識(shí),需要的朋友參考下吧
    2018-03-03
  • 關(guān)于python線程池的四種實(shí)現(xiàn)方式

    關(guān)于python線程池的四種實(shí)現(xiàn)方式

    這篇文章主要介紹了關(guān)于python線程池的四種實(shí)現(xiàn)方式,一個(gè)程序運(yùn)行起來(lái)后,一定有一個(gè)執(zhí)行代碼的東西,這個(gè)東西就是線程,需要的朋友可以參考下
    2023-04-04

最新評(píng)論

明星| 海城市| 南通市| 黎平县| 辉南县| 东明县| 潼南县| 原阳县| 辉县市| 滁州市| 桦川县| 沙田区| 乐至县| 莆田市| 玉环县| 平谷区| 安泽县| 兴义市| 龙口市| 衢州市| 兴业县| 杨浦区| 博白县| 三都| 寿光市| 新营市| 东山县| 新邵县| 榆林市| 凤城市| 齐河县| 中山市| 会泽县| 东乌| 若羌县| 上杭县| 南漳县| 东方市| 石泉县| 巴南区| 蒲城县|