python中的高阶函数与递归函数

高阶函数

一个函数作为另一个函数的参数传入;函数名可以作为返回值;这样的函数即为高阶函数。

例如:求两个数的平方和

def f(m):
    return m*m

def f1(a,b,function):
    rets=function(a)+function(b)
    return rets
print(f1(1,3,f))
# 函数f1被称为高阶函数。

递归函数

函数调用自己,这种函数成为递归函数。但凡递归函数做的事,循环函数都可以完成。

  • 必须有一个明确的结束条件;
  • 每次进入更深一层递归时,需要递归的的次数都应该相应减少;
  • 递归效率不高,递归层次过多会导致栈溢出;

例1:如下计算阶乘的函数

递归函数:
def func(n):
    if n==1:
        return 1
    return n*func(n-1)

func(5)

for循环:
def func(x):
    x=x+1
    sum=1
    for i in range(x)[1:]:
        sum*=i
    return sum

func(5)

例2:利用递归函数求斐波那契数列的第n位数字:

def fibo(n):
    if 1 < n <= 3:
        return 1
    elif n==1:
	    return 0
    elif n<=0:
        return "please input an int greater than 0."
    return fibo(n-1)+fibo(n-2)

print(fibo(8))               # 返回13  效率非常低,当n大于30时,明显都能看出来


# 下面是利用for循环实现斐波那契数列求值:
def fib(n):
    a = 0
    b = 1
    if n >= 3:
        for i in range(n+1)[3:]:
            a,b=b,a+b
            result = b
        return result
    elif n == 1:
	    return a
    elif n ==0:
	    return b
    else:
	    return "please input an int greater than 0."

print(fibo(8))             # 返回13  效率高

内置函数

 https://docs.python.org/3/library/functions.html

如需转载,请注明出处,否则本人会追究法律责任!
原文地址:https://www.cnblogs.com/hacker001/p/10091417.html