实际开发的时候,能不用递归就不用
1.什么是递归函数
函数中调用函数本身的函数就是递归函数
2.递归的作用:循环能做的事情递归函数都能做
def func1():
print('====')
func1()
a = 0
def func2():
global a
if a < 5:
print('~~~~~')
a += 1
func2()
func2()
~~~~~
0 < 5: a = 1 func2()
~~~~~
1 < 5 a = 2 func2()
~~~~~
2 < 5 a = 3 func2()
~~~~~
3 < 5 a = 4 func2()
~~~~~
4 < 5 a = 5 func2()
~~~~~
5 < 5
func2()
3.怎么写递归函数:f(n)
第一步:确定临界值 - 循环结束的条件,在临界值的地方要让函数结束!
第二步:找关系 - 找当次循环和上次循环的关系;
找f(n)和f(n-1)的关系
第三步: 假设函数f的功能已经实现,通过f(n-1)来实现f(n)的功能
实现:1+2+3+...+n
a.for循环
n = 20
sum1 = 0
for x in range(n+1):
sum1 += x
print(sum1)
b.递归
def yt_sum(n):
# 1.找临界值
if n == 1:
return 1
# 2. 找关系
"""
找yt_sum(n)和yt_sum(n-1)的关系
yt_sum(n): 1+2+3+...+n-1+n
yt_sum(n-1): 1+2+3+...n-1
yt_sum(n) = yt_sum(n-1)+n
"""
return yt_sum(n-1)+n
"""
yt_sum(4):
n = 4 4==1 return yt_sum(3)+4 ---> return 1+2+3+4
yt_sum(3):
n = 3 3==1 return yt_sum(2)+3 ---> return 1+2+3
yt_sum(2):
n = 2 2==1 return yt_sum(1)+2 ---> return 1+2
yt_sum(1):
n = 1 1==1 return 1
"""
print(yt_sum(4))
print(yt_sum(100))
练习: 求斐波那契数列第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)
"""
return sequence(n-1)+sequence(n-2)
print(sequence(5))
4.循环能做的事情不能使用递归做!
sum1 = 0
for x in range(10001):
sum1 += x
print(sum1)
def yt_sum(n):
if n == 1:
return 1
return yt_sum(n-1)+n
print(yt_sum(100))