函数式编程

编程方法论:

 

 

面向过程的编程思想:

    核心是‘过程’二字,过程即解决问题的步骤,即先干什么,再干什么。。。。

    基于面向过程编写程序就好比设计一条流水线,是一种机械式的思维方式。

    示范:

    总结优缺点:

    优点:复杂的问题流程化,进而简单化

    缺点:修改一个阶段,其他阶段都有可能需要做出修改,牵一发而动全身,即扩展性极差

    应用:用于扩展性要求低的场景,

 

 

        

函数式

面向对象

 

1、高阶函数

  满足两个特性任意一个极为高阶函数

  1、函数的传入参数是一个函数名

  2、函数的返回值是一个函数名

 

def foo(n):
    print(n)

def bar(name):
    print("my name is %s" %name)

foo(bar)            #   <function bar at 0x00000152EDC19C80>

 

  

 

 

#函数bar在foo内为尾调用      #最后一行不一定是最后一步
def bar(n): 
    return n
def foo(x):  
    return bar(x)
foo(3)

 

  

 

  +

#函数bar在foo内为非尾调用
def bar(n):
    return n
def foo(x):
    y=bar(x)
    return y

#函数bar在foo内为非尾调用
def bar(n):
    return n
def foo(x):
    return bar(x)+1

 

  

#下面的代码是一个阶乘函数,计算n的阶乘,最多需要保存n个调用记录,复杂度为0(n)
def fac(n):
    if n ==10:
        return 1
    return n*fac(n-1)
print(fac(5))

  

如果改成尾递归,只保留一个记录,复杂度为0(1)
def fac(n,total):
    if n ==1:
        return total
    return fac(n-1,n*total)
print(fac(5,1))

  

 

posted @ 2019-03-16 13:57  xyqd  阅读(10)  评论(0)    收藏  举报