Python遞歸函數(shù)特點(diǎn)及原理解析
1 遞歸函數(shù)的特點(diǎn)
特點(diǎn)
一個(gè)函數(shù) 內(nèi)部 調(diào)用自己
函數(shù)內(nèi)部可以調(diào)用其他函數(shù),當(dāng)然在函數(shù)內(nèi)部也可以調(diào)用自己
代碼特點(diǎn)
函數(shù)內(nèi)部的 代碼 是相同的,只是針對(duì) 參數(shù) 不同,處理的結(jié)果不同
當(dāng) 參數(shù)滿足一個(gè)條件 時(shí),函數(shù)不再執(zhí)行
這個(gè)非常重要,通常被稱為遞歸的出口,否則 會(huì)出現(xiàn)死循環(huán)!
示例代碼
def sum_numbers(num): print(num) # 遞歸的出口很重要,否則會(huì)出現(xiàn)死循環(huán) if num == 1: return sum_numbers(num - 1) sum_numbers(3)
2 遞歸案例 —— 計(jì)算數(shù)字累加
需求
定義一個(gè)函數(shù) sum_numbers
能夠接收一個(gè) num 的整數(shù)參數(shù)
計(jì)算 1 + 2 + ... num 的結(jié)果
def sum_numbers(num): if num == 1: return 1 # 假設(shè) sum_numbers 能夠完成 num - 1 的累加 temp = sum_numbers(num - 1) # 函數(shù)內(nèi)部的核心算法就是 兩個(gè)數(shù)字的相加 return num + temp print(sum_numbers(2))
# # 練習(xí) # 創(chuàng)建一個(gè)函數(shù),用來檢查一個(gè)任意的字符串是否是回文字符串,如果是返回True,否則返回False # 回文字符串,字符串從前往后念和從后往前念是一樣的 # abcba # abcdefgfedcba # 先檢查第一個(gè)字符和最后一個(gè)字符是否一致,如果不一致則不是回文字符串 # 如果一致,則看剩余的部分是否是回文字符串 # 檢查 abcdefgfedcba 是不是回文 # 檢查 bcdefgfedcb 是不是回文 # 檢查 cdefgfedc 是不是回文 # 檢查 defgfed 是不是回文 # 檢查 efgfe 是不是回文 # 檢查 fgf 是不是回文 # 檢查 g 是不是回文 def hui_wen(s): ''' 該函數(shù)用來檢查指定的字符串是否回文字符串,如果是返回True,否則返回False 參數(shù): s:就是要檢查的字符串 ''' # 基線條件 if len(s) < 2: # 字符串的長(zhǎng)度小于2,則字符串一定是回文 return True elif s[0] != s[-1]: # 第一個(gè)字符和最后一個(gè)字符不相等,不是回文字符串 return False # 遞歸條件 return hui_wen(s[1:-1]) print(hui_wen('abcdefgfedcba'))
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
tensorflow1.0學(xué)習(xí)之模型的保存與恢復(fù)(Saver)
這篇文章主要介紹了tensorflow1.0學(xué)習(xí)之模型的保存與恢復(fù)(Saver) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04Python Switch Case三種實(shí)現(xiàn)方法代碼實(shí)例
這篇文章主要介紹了Python Switch Case2種實(shí)現(xiàn)方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06利用python微信庫(kù)itchat實(shí)現(xiàn)微信自動(dòng)回復(fù)功能
最近發(fā)現(xiàn)了一個(gè)特別好玩的Python 微信庫(kù)itchat,可以實(shí)現(xiàn)自動(dòng)回復(fù)等多種功能,下面這篇文章主要給大家介紹了利用python微信庫(kù)itchat實(shí)現(xiàn)微信自動(dòng)回復(fù)功能的相關(guān)資料,需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。2017-05-05Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將名稱映射到序列元素中的方法
這篇文章主要介紹了Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)將名稱映射到序列元素中的方法,結(jié)合實(shí)例形式分析了Python使用collections.namedtuple()進(jìn)行元組命名相關(guān)操作技巧,需要的朋友可以參考下2018-03-03python使用yield壓平嵌套字典的超簡(jiǎn)單方法
這篇文章主要給大家介紹了關(guān)于python使用yield壓平嵌套字典的超簡(jiǎn)單方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11如何解決Python讀取圖片路徑存在轉(zhuǎn)義字符的問題
這篇文章主要為大家詳細(xì)介紹了如何解決Python讀取圖片路徑時(shí)存在轉(zhuǎn)義字符的問題,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2023-07-07Python中使用?zipfile創(chuàng)建文件壓縮工具
這篇文章主要介紹了Python中使用zipfile創(chuàng)建文件壓縮工具,通過使用 wxPython 模塊,我們創(chuàng)建了一個(gè)簡(jiǎn)單而實(shí)用的文件壓縮工具,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的ca參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09Python關(guān)于print的操作(倒計(jì)時(shí)、轉(zhuǎn)圈顯示、進(jìn)度條)
這篇文章主要介紹了Python關(guān)于print的操作(倒計(jì)時(shí)、轉(zhuǎn)圈顯示、進(jìn)度條),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05