day7-2

函数在执行过程中只要遇到return 语句就会停止执行并返回结果

如果一个函数没有return 语句,那么他返回值为none

 递归:

特性:

1.必须有一个明确的的结束条件

2.每次进入更深一层的递归的时候,问题规模相对上一次减少

3.递归效率不高,递归层次过多会导致栈溢出(计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一成栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的。所以递归的次数过多,会导致栈溢出)

一:栈溢出

1 def calc(n):
2     print(n)
3     return calc(n+1)
4 
5 calc(0) 
6 # 没有明确结束条件,函数栈溢出。因为函数被调用,返回一个函数,
7 #进入第二层,如果第二层结束了,第一层也就结束了,但第二层需要等待第三层结束,所以栈溢出

二:递归:(考虑结束条件,和初始条件,不考虑中间过程)

 1 def calc1(n):
 2     print(n)
 3     if n // 2 > 0:
 4         return calc1(n // 2)
 5     print("->",n)
 6 
 7 calc1(10)
 8 
 9 
10 # =============================================================================
11 # 10
12 # 5
13 # 2
14 # 1
15 # -> 1
16 # =============================================================================

函数式编程: 函数是面向过程程序设计的基本单元。在计算机层次上,汇编语言是最接近计算机的语言。而函数式编程是一种抽象程度很高额编程范式。纯碎的函数式编程编写的函数是没有变量的

python并不是纯碎的函数式编程。函数式编程指的是数学意义上的x,y ,不是之前python中学的函数

高阶函数

变量可以指向函数,函数的参数能接受变量,那么一个函数可以接受另一个函数作为参数,这种函数就称为高阶函数

 1 def calc(x,y,f):
 2     "add"
 3     return f(x)+f(y)
 4 
 5 def fun(x):
 6     if x < 0:
 7         return -x
 8     else:
 9         return x   # abs求绝对值
10 
11 print(calc(-10,5,fun))
12 
13 # =============================================================================
14 # 15
15 # =============================================================================
原文地址:https://www.cnblogs.com/yfjly/p/9727240.html