python 函数式编程尾递归优化 day16
生活随笔
收集整理的這篇文章主要介紹了
python 函数式编程尾递归优化 day16
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
函數(shù)編程的特征:
1不可變:不用變量保存狀態(tài),不修改變量
#非函數(shù)式 a = 1 def incr_test1():global a#一旦更改全局變量后后面再調(diào)用a就容易亂a += 1return a incr_test1() print(a) def bar():print('from bar') def foo():print('from foo')return bar n = foo() n()return可以返回任何數(shù)值,包括自己
def hanle():print('form handle')return hanle h = hanle() h()()?
高階函數(shù):
把函數(shù)當(dāng)做參數(shù)傳給另一個(gè)函數(shù)
返回值包括函數(shù)
兩個(gè)有一個(gè)就是高階函數(shù)
?
尾遞歸優(yōu)化,尾遞歸,函數(shù)最后一步是遞歸函數(shù)
其好處是可以釋放上一層次的內(nèi)存,優(yōu)化運(yùn)行效率
#函數(shù)bar在foo為非尾調(diào)用 def bar(n):return n def foo(x):y = bar(x)return y#函數(shù)bar在foo內(nèi)衛(wèi)非尾調(diào)用 def bar(n):return n def foo():return bar(x)+1 #非尾遞歸 def cal(seq):if len(seq) == 1:return seq[0]head,*tail = seqreturn head+cal(tail) print(cal(range(100)))#尾遞歸 def cal(l):print(l)if len(l) == 1:return l[0]first,second,*args = 1l[0]=first+secondl.pop(1)return cal(l) x=cal([i for i in range(10)]) print(x)?
轉(zhuǎn)載于:https://www.cnblogs.com/wangleiyifan/p/9278719.html
總結(jié)
以上是生活随笔為你收集整理的python 函数式编程尾递归优化 day16的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 26、jQuery
- 下一篇: pip3 install request