Python遞歸函數(shù)特點及原理解析
1 遞歸函數(shù)的特點
特點
一個函數(shù) 內(nèi)部 調(diào)用自己
函數(shù)內(nèi)部可以調(diào)用其他函數(shù),當然在函數(shù)內(nèi)部也可以調(diào)用自己
代碼特點
函數(shù)內(nèi)部的 代碼 是相同的,只是針對 參數(shù) 不同,處理的結(jié)果不同
當 參數(shù)滿足一個條件 時,函數(shù)不再執(zhí)行
這個非常重要,通常被稱為遞歸的出口,否則 會出現(xiàn)死循環(huán)!
示例代碼
def sum_numbers(num):
print(num)
# 遞歸的出口很重要,否則會出現(xiàn)死循環(huán)
if num == 1:
return
sum_numbers(num - 1)
sum_numbers(3)

2 遞歸案例 —— 計算數(shù)字累加
需求
定義一個函數(shù) sum_numbers
能夠接收一個 num 的整數(shù)參數(shù)
計算 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)部的核心算法就是 兩個數(shù)字的相加
return num + temp
print(sum_numbers(2))

#
# 練習
# 創(chuàng)建一個函數(shù),用來檢查一個任意的字符串是否是回文字符串,如果是返回True,否則返回False
# 回文字符串,字符串從前往后念和從后往前念是一樣的
# abcba
# abcdefgfedcba
# 先檢查第一個字符和最后一個字符是否一致,如果不一致則不是回文字符串
# 如果一致,則看剩余的部分是否是回文字符串
# 檢查 abcdefgfedcba 是不是回文
# 檢查 bcdefgfedcb 是不是回文
# 檢查 cdefgfedc 是不是回文
# 檢查 defgfed 是不是回文
# 檢查 efgfe 是不是回文
# 檢查 fgf 是不是回文
# 檢查 g 是不是回文
def hui_wen(s):
'''
該函數(shù)用來檢查指定的字符串是否回文字符串,如果是返回True,否則返回False
參數(shù):
s:就是要檢查的字符串
'''
# 基線條件
if len(s) < 2:
# 字符串的長度小于2,則字符串一定是回文
return True
elif s[0] != s[-1]:
# 第一個字符和最后一個字符不相等,不是回文字符串
return False
# 遞歸條件
return hui_wen(s[1:-1])
print(hui_wen('abcdefgfedcba'))

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
聊聊PyTorch中eval和no_grad的關(guān)系
這篇文章主要介紹了聊聊PyTorch中eval和no_grad的關(guān)系,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-05-05
Django動態(tài)展示Pyecharts圖表數(shù)據(jù)的幾種方法
本文主要介紹了Django動態(tài)展示Pyecharts圖表數(shù)據(jù)的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-08-08
python實現(xiàn)端口轉(zhuǎn)發(fā)器的方法
這篇文章主要介紹了python實現(xiàn)端口轉(zhuǎn)發(fā)器的方法,涉及Python實現(xiàn)端口轉(zhuǎn)發(fā)的技巧,支持TCP和UDP協(xié)議,需要的朋友可以參考下2015-03-03
各種Python庫安裝包下載地址與安裝過程詳細介紹(Windows版)
這篇文章主要介紹了Windows版的各種Python庫安裝包下載地址與安裝過程詳細介紹,本文給大家提供了windows版的各種Python庫安裝包下載地址等相關(guān)知識,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-11-11
Python發(fā)起請求提示UnicodeEncodeError錯誤代碼解決方法
這篇文章主要介紹了Python發(fā)起請求提示UnicodeEncodeError錯誤代碼解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04
Python爬蟲基于lxml解決數(shù)據(jù)編碼亂碼問題
這篇文章主要介紹了Python爬蟲基于lxml解決數(shù)據(jù)編碼亂碼問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07

