递归;实际开发的时候,能不用就不用
1.什么是递归函数
- 在函数中调用函数本身的函数就是递归函数
2.递归的作用:循环能做的事情,递归都能做
3. 怎么写递归函数,用递归来解决实际问题
-
第一步:确定临界值 -> 循环结束的条件,在临界值的地方要让递归结束(return)
-
第二步:找关系 - 找当次循环和上次循环的关系;找f(n)和f(n-1)的关系
-
第三步:假设函数的功能已经实现,通过f(n-1)来实现f(n)的功能 return f(n-1)与f(n)的关系
4.循环能做的事情不能使用递归做:
-
使用循环,range(3)与range(3000)的内存消耗其实是差不多的,只是改变一个全局变量的值,但是内存消耗是差不多的
-
使用递归,每递归一次,都在开辟一个新的内存空间,内存消耗特别大,额外开辟栈区间,当return后,又在不断的销毁内存空间,消耗cpu
# 1 + 2 + 3 + 4 ... n
# 使用递归
def ql_sum(n): # n为临界值
# 1. 找临界值
if n == 1: # n == 1 为起始值,感觉也像递归结束的地方
return 1
# 2. 找f(n)与f(n-1)的关系
"""
ql_sum(n):ql_sum(n-1)+n -> 关系
"""
# 3. return f(n)与f(n-1)的关系
return ql_sum(n-1)+n
print(ql_sum(2500))
# 练习:求佩波那契数列第n个值
# 1,1,2,3,5,8,13,...
def sequence(n):
# 1.找临界值
if n == 1 or n == 2:
return 1
# 2. 找f(n)和f(n-1)的关系
"""
f(n) = f(n-1)+f(n-2)
"""
# 3. return f(n)与f(n-1)的关系
return sequence(n-1) + sequence(n-2)
print(sequence(5))
网友评论