• 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

    如需转载,请注明出处,否则本人会追究法律责任!
  • 相关阅读:
    ASP.NET-FineUI开发实践-9(四)
    ASP.NET-FineUI开发实践-9(三)
    ASP.NET-FineUI开发实践-9(二)
    ASP.NET-FineUI开发实践-9
    ASP.NET-FineUI开发实践-8(二)
    ASP.NET-FineUI开发实践-8
    ASP.NET-FineUI开发实践-7
    ASP.NET-FineUI开发实践-6(三)
    ASP.NET-FineUI开发实践-6(二)
    ASP.NET-FineUI开发实践-6
  • 原文地址:https://www.cnblogs.com/hacker001/p/10091417.html
Copyright © 2020-2023  润新知