高阶函数特点
1.函数接收的参数是一个函数
2.函数的return值中包含函数
高阶函数例子
某个函数的return值可以是任何函数,包括自己
ef test1():
print("from test1")
def test2():
print("from test2")
return test1
f = test2()
f()
def test():
print("from test")
return test
f = test()
f()
尾递归优化
尾递归即将递归调用的结构放在函数执行的最后一步,在调用递归操作之后不存在其他语句。
使用尾递归可以提高程序运行效率,减少栈溢出的情况。
具体是在函数return位置调用另一个执行的函数,即return 函数名()
#一般递归
def test(n):
if n == 1:
return 1
else:
return n + test(n - 1)
print(test(5))
#尾递归
def test(n, d=0):
if n == 1:
return d + 1
else:
d = d + n
return test(n - 1, d)
print(test(5))
一般递归执行时:
test(5)
5 + test(4)
5 + 4 + test(3)
5 + 4 + 3 +test(2)
5 + 4 + 3 + 2 +test(1)
5 + 4 + 3 + 3
5 + 4 + 6
5 + 10
15
尾递归执行时:
test5,0)
test(4, 5)
test(3, 9)
test(2, 12)
test(1, 14)
15