Python--递归
生活随笔
收集整理的這篇文章主要介紹了
Python--递归
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
面向函數編程
def func():print('從前有座山,山里有座廟,廟里有個老和尚講故事,講的什么呀?')func()解耦:盡量把不相關的功能拆開,用的時候再調用函數,增強代碼重用性,減少代碼變更的相互影響
要完成一個完整的功能,但這個功能的規模要盡量小,并且和這個功能無關的其他代碼應該和這個函數
分離
recursion 遞歸
什么是遞歸:
一個函數在內部調用了自己本身
def func():print('從前有座山,山里有座廟,廟里有個老和尚講故事,講的什么呀?')func()print('123')這里面的123永遠不會打印,永遠都在執行下一個func()
import sys 和python解釋器相關的模塊
遞歸層數在python中最大997。可以改限制。
?
遞歸實例:
寫遞歸函數,必須要有一個結束條件
alex比egon大兩歲????? alex=egon+2
egon比wusir大兩歲???? egon=wusir+2
wusir比金鑫大兩歲???? wusir=金鑫+2
金鑫40了????????????? 金鑫40
推測的過程是遞,后面計算是歸
def age(n):if n ==4:return 40return age(n+1)+2 f = age(1) print(f)根據線索向下是遞,拿到一個結果再向上是歸
遞歸方法求階乘:
def jie(n):return jie(n-1)*nprint(jie(7))?
二分查找
l=[1,5,6,7,8,9,25,26,78,123,456,789,1233,7899,8521,9635,10255] def search(num,l,start=None,end=None):start=start if start else 0end=end if end else len(l)-1mid = (end-start)//2+startif start>end:return Noneif l[mid]>num:return search(num,l,0,mid-1)if l[mid]<num:return search(num,l,mid+1,end)if l[mid]==num:return mid,l[mid] print(search(78,l))無序的先用.sort()排序
斐波那契數列遞歸
?
li=[1,1] def fib(n):if n>len(li):li.append(li[-2]+li[-1])fib(n)return li n = input('請輸入要計算的數字個數:') n = int(n) ret = fib(n) print(ret)面試真題遞歸
?
data={'time':'2016-08-05T13:13:05','some_id':'ID1234', 'grp1':{'fld1':1,'fld2':2}, 'xxx2':{'fld3':0,'fld5':0.4},'fld6':11,'fld7':7,'fld46':8} def select(data,fields):li=fields.split('|')for item in data:if item in li:print(item,data[item])elif type(data[item])==dict:ret = select(data[item],fields) n = input('按照格式輸入:') select(data,n)三級菜單遞歸
menu = {'北京': {'海淀': {'五道口': {'soho': {},'網易': {},'google': {}},'中關村': {'愛奇藝': {},'汽車之家': {},'youku': {},},'上地': {'百度': {},},},'昌平': {'沙河': {'老男孩': {},'北航': {},},'天通苑': {},'回龍觀': {},},'朝陽': {},'東城': {},},'上海': {'閔行': {"人民廣場": {'炸雞店': {}}},'閘北': {'火車戰': {'攜程': {}}},'浦東': {},},'山東': {}, } #相同的數據類型 嵌套在一起def Three_Level_Menu(menu):while True:for k in menu:print(k)key = input('>>>')if key == 'q':return 'q'elif key == 'b':breakelif key in menu:ret = Three_Level_Menu(menu[key])if ret == 'q': return 'q' Three_Level_Menu(menu) 三級菜單?
轉載于:https://www.cnblogs.com/gaoshengyue/p/7485020.html
總結
以上是生活随笔為你收集整理的Python--递归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将枚举的键值绑定到下拉列表框
- 下一篇: margin 负边距应用