Python中的函数递归
生活随笔
收集整理的這篇文章主要介紹了
Python中的函数递归
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
函數遞歸
概述?
1.如果一個函數調用自身,該函數被稱為遞歸函數,這種現象被稱為遞歸調用
2.遞歸包含了一種隱式的循環,它會重復執行某段代碼,但是這種重復無須條件進行控制
? ?使用遞歸解決問題的思路:
? ? ? ? ? ①? 找到一個臨界條件【能夠讓遞歸停止下來】
? ? ? ? ? ②?找到兩次隱式循環之間的關系【規律】
3.很經典的斐波那契數列
# 報一個數,輸出在斐波那契數列中對應的數 # 如: 報10(即第十個數字),輸出55 """ 斐波那契數列1 1 2 3 5 8 13 21 34 55 .... """def f(n):if n == 1 or n == 2:return 1else:return f(n - 1) + f(n - 2)r = f(10) # 第十個位置上的斐波那契數列的數 print(r)可以根據程序,一步一步的分析下去,一個一個數字往進帶,就會發下函數一直再進行遞歸,一直到最后遞歸完成return相對應的值。
4.注意:在書寫遞歸函數時,函數必須有返回值【下一次的操作可能需要用到上一次運算的結果】
5.??用遞歸實現求某個數的累加整數和
# 用遞歸實現求某個數的累加整數和 def add_1(n):if n == 1:return 1else:return add_1(n - 1) + nresult_1 = add_1(100) print(result_1)總結:?在實際的開發中,盡量避免使用遞歸,但是,遞歸在使用的過程中代碼簡單,
? ? ? ? ?缺點:過深的遞歸調用會導致棧溢出?
6.?同樣??用遞歸實現求某個數的階乘
# 用遞歸實現求某個數的階乘 def mul_1(n):if n == 1:return 1else:return mul_1(n - 1) * nresult_2 = mul_1(5) print(result_2)?
用Python遞歸,?封裝函數,獲取一個指定目錄下的所有的內容,如果是文件,則直接打印,如果是文件夾,則繼續查找
# 需求:封裝函數,獲取一個指定目錄下的所有的內容,如果是文件,則直接打印,如果是文件夾,則繼續查找 import osdef getAllFile(path):if not os.path.exists(path):print("路徑不存在,無法操作")returnif os.path.isfile(path):print("路徑是一個文件:%s" % path)returnfilelist = os.listdir(path)# 遍歷for fileName in filelist:# 拼接路徑filePath = os.path.join(path, fileName)# 判斷是否是文件if os.path.isdir(filePath):# 目錄,繼續訪問print("目錄: %s" % filePath)# 使用遞歸getAllFile(filePath)else:print("文件 : %s " % filePath)if __name__ == '__main__':path = "E:\python3_code" # 指定目錄getAllFile(path)?
總結
以上是生活随笔為你收集整理的Python中的函数递归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.Java中的关键字和标识符
- 下一篇: 栈和队列(python代码)