【算法入门-Python】02_递归

一、递归

递归的两个特点:调用自身;结束条件。

python 复制代码
def func1(x):
    print(x)
    func1(x-1)

没有结束条件,si递归。不是递归。

python 复制代码
def func2(x):
	if x > 0:
        print(x)
        func2(x+1)

递归调用的x+1,没有结束条件。不是递归

python 复制代码
def func3(x):
    if x > 0:
    	print(x)
        func3(x-1)

是递归。打印123

如下图:先打印,后递归。从上往下123

python 复制代码
def func4(x):
	if x > 0:
        func4(x-1)
        print(x)

func3一样,只是打印位置不同。是递归。打印321

如下图:先递归,后打印。从上往下321

递归实例:汉诺塔问题

问题:

思路:

第一步和第三步是原问题的一个子问题

python 复制代码
# a,b,c表示三个盘子,这里原函数表示:起点为a,经过b,移动到c
def hanoi(n, a, b, c): 
    if n > 0:
        hanoi(n-1, a, c, b)
        print("moving from %s to %s" % (a, c))
        hanoi(n-1, b, a, c)
        
# test
hanoi(3, 'A', 'B', 'C')

汉诺塔移动次数递推式:h(x) = 2h(x-1) + 1

相关推荐
Day(AKA Elin)12 小时前
【Day】MTP(Multi Token Prediction)技术学习
python·深度学习·学习·llama
lbb 小魔仙12 小时前
MuMu 模拟器 6.0 硬核测评:这次升级确实不一样
java·开发语言·模拟器·mumu·硬核测评
r_oo_ki_e_12 小时前
Java 线程池
java·开发语言
生戎马12 小时前
高光谱拼接算法(七)USAC
算法
杜子不疼.13 小时前
【Qt初识】信号槽(二):自定义信号函数与槽函数
开发语言·qt
PhotonixBay13 小时前
共聚焦成像核心原理:针孔、PSF与三维形貌测量技术
人工智能·测试工具·算法
程序员小远13 小时前
接口测试之文件上传
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
秋田君13 小时前
Qt_QVariant
开发语言·qt
江华森13 小时前
Python 实现高德地图找房(三):地图可视化与高德 JS API
开发语言·javascript·python
weixin_4713830313 小时前
args,...args与Parameters<T>
开发语言·前端