python 函数式编程尾递归优化 day16
Posted wangleiyifan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 函数式编程尾递归优化 day16相关的知识,希望对你有一定的参考价值。
函数编程的特征:
1不可变:不用变量保存状态,不修改变量
#非函数式 a = 1 def incr_test1(): global a#一旦更改全局变量后后面再调用a就容易乱 a += 1 return a incr_test1() print(a)
def bar(): print(‘from bar‘) def foo(): print(‘from foo‘) return bar n = foo() n()
return可以返回任何数值,包括自己
def hanle(): print(‘form handle‘) return hanle h = hanle() h()()
高阶函数:
把函数当做参数传给另一个函数
返回值包括函数
两个有一个就是高阶函数
尾递归优化,尾递归,函数最后一步是递归函数
其好处是可以释放上一层次的内存,优化运行效率
#函数bar在foo为非尾调用 def bar(n): return n def foo(x): y = bar(x) return y #函数bar在foo内卫非尾调用 def bar(n): return n def foo(): return bar(x)+1
#非尾递归 def cal(seq): if len(seq) == 1: return seq[0] head,*tail = seq return head+cal(tail) print(cal(range(100))) #尾递归 def cal(l): print(l) if len(l) == 1: return l[0] first,second,*args = 1 l[0]=first+second l.pop(1) return cal(l) x=cal([i for i in range(10)]) print(x)
以上是关于python 函数式编程尾递归优化 day16的主要内容,如果未能解决你的问题,请参考以下文章