【算法】递归算法

本文探讨了递归算法的基本原理,通过阶乘运算、汉诺塔问题和斐波那契数列的实例展示了递归在解决问题时的清晰思路。递归与while循环在作用上相似,但递归在表达复杂逻辑时可能更为直观。同时,介绍了如何使用递归计算阶乘,并通过汉诺塔回溯递归的移动步骤。此外,还讨论了斐波那契数列的递归实现,展示了递归在解决数学问题中的应用。
摘要由CSDN通过智能技术生成
"""
递归算法:重复分解问题,无限调用自身
递归条件:终止无限循环的条件
区别:while循环与递归之间的异同点:作用是相同的,递归方案的解决思路更清晰
"""

def function_print(i):
    print(i)
    i = i-1
    if i <= 1:
        return 1
    else:
        function_print(i)

function_print(7)
"""
阶乘运算
注意:对栈的理解,传入是5*4*3*2*1 计算时 1*2*3*4*5
"""
def factorial(n):  # 自定义求n的阶乘函数
    print('key_num', n)
    if n == 1:  # 判断n=1
        return 1  # 返回1结束
    else:  # 递归条件 即n!=1
        return n * factorial(n - 1)  # 递归求阶乘

result = factorial(5)  # 调用阶乘函数
print(result)
"""
汉诺塔问题
"""

def hanoi(n,A,B,C):                # 定义汉诺塔函数,参数n是圆盘数,A、B、C是3根柱
	if n==1:                       # 判断圆盘数,如果等于1
		print(A,'-->',C,' ',n)     # 直接将A柱上的圆盘移动到C柱上
	else:                          # 否则,进行递归移动
		hanoi(n-1,A,C,B)           # 递归将A柱最上方的n-1个盘子落在B柱
		print(A,'-->',C,' ',n)     # 输出将A柱上的圆盘移动到C柱上,也就是将A柱的最小面盘子落在C柱
		hanoi(n-1,B,A,C)           # 递归将B柱上的n-1个盘子,落在C柱

hanoi(3,'A','B','C')               # 调用函数
  • 斐波纳契数列
  • 杨辉三角的取值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡先生的笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值