【Python】函数递归实例之字符串反转、汉诺塔问题分析

本文探讨了递归的概念,通过Python实现递归函数,包括字符串反转、斐波那契数列及汉诺塔问题。递归关键在于基例和链条,递归函数通过不断调用自身解决复杂问题。例如,字符串反转时,空字符串为基例,非空字符串通过移除首字符并递归处理剩余部分实现反转。汉诺塔问题中,递归策略涉及借助过渡柱子将盘子从源柱至目标柱。
摘要由CSDN通过智能技术生成
递归的定义

函数定义中调用函数自身的方式

两个特性:

  • 链条:计算过程存在递归链条
    例如,n!=n*(n-1)!,n!与(n-1)!就构成了递归链条
  • 基例:基础的实例,存在一个或多个不需要再次递归的基例
    例如,当n=0时,我们定义它的值为1这就是一种基例,它与其他的值之间不存在递归关系
递归的实现

函数+分支语句
递归本身是一个函数,需要函数定义方式描述,用函数定义名字,在函数中调用本身。在函数内部,我们要区分哪些是基例,哪些是链条,所以我们要使用一个分支语句对输入参数进行判断,基例和链条,分别编写对应代码

def fact(n):
	if n == 0:
		return 1
	else:
		return n*fact(n-1)

我们假设参数的初始值为5,当n等于5,它会返回n*fact(n-1)也就是执行5×fact(4),但是当前程序并没有运算fact(4),不知道fac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值