函数式编程
编程方法论:
面向过程的编程思想:
核心是‘过程’二字,过程即解决问题的步骤,即先干什么,再干什么。。。。
基于面向过程编写程序就好比设计一条流水线,是一种机械式的思维方式。
示范:
总结优缺点:
优点:复杂的问题流程化,进而简单化
缺点:修改一个阶段,其他阶段都有可能需要做出修改,牵一发而动全身,即扩展性极差
应用:用于扩展性要求低的场景,
函数式
面向对象
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))

浙公网安备 33010602011771号