浙江建设监理协会官方网站,秦皇岛网站搜索优化,电脑网络,凡客有家b站视频#xff1a;https://www.bilibili.com/video/BV1iS4y1e7MJ/?spm_id_from333.999.0.0vd_source1717654b9cbbc6a773c2092070686a95
# 递归的定义#xff1a;其实就是自己调用自己#xff0c;一般用函数的形式来进行特点#xff1a;
1、一定…b站视频https://www.bilibili.com/video/BV1iS4y1e7MJ/?spm_id_from333.999.0.0vd_source1717654b9cbbc6a773c2092070686a95
# 递归的定义其实就是自己调用自己一般用函数的形式来进行特点
1、一定要有递推式显示、隐式也有过程
2、一定要有递归的出口为了避免一直执行一定要中止程序一般要写在函数的开头
3、一定要定义函数函数自己调用自己
4、比较耗内存(斐波那契数列重复计算f(3))递归需要注意的地方
1、会耗费大量的内存(重复计算)所以用递归一定要谨慎如果电脑内存不够大就不要用递归例如计算斐波那契数列
# 举例1、递推式
f(1)1
f(2)f(1)1
f(3)f(2)1
f(4)f(3)1
.
.
.
f(n)f(n-1)12、出口
f(1)1
def f(n):# 先写递归的出口if n 1:return 1else:return f(n-1) 1a f(5)
print(a)# 斐波那契数列会重复计算很多f(2)f(1)
def f(n):if n 1:return 0elif n 2:return 1else:return f(n - 1) f(n - 2)print(f(6))# 小明一次最多能上三层楼梯爬到第n层能有多少种爬法
def f(n):if n 1:return 1elif n 2:return 2elif n 3:return 4else:return f(n - 1) f(n - 2) f(n - 3)print(f(5))# 冒泡排序使用递归
def f(m1, m2):global list1# 递归出口if m1 m2:return# 递推式没有公式是一个过程for i in range(m1, m2):if list1[i] list1[i 1]:list1[i], list1[i 1] list1[i 1], list1[i]# 递归f(m1, m2 - 1)list1 [12, 11, 5, 6, 7, 18]
f(0, len(list1) - 1)
print(list1)# 递归求和求最大值
def f(n):if n 1:return 1else:return n f(n - 1)print(f(10))list1 [12, 14, 15, 8, 7]def f(n):if n 1:return list1[0]else:return max(f(n - 1), list1[n - 1])print(f(len(list1)))# 因式分解
num 1def f(m1, m2):global num# 循环结束就是出口所以不写for i in range(m1, m2):if m2 % i 0 and m2 // i i:num 1f(i, m2 // i)f(2, 36)
print(num)