【算法入门-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

相关推荐
lsx2024067 分钟前
Go 语言指针
开发语言
fie888922 分钟前
MATLAB有限元框架程序
python·算法·matlab
wearegogog12322 分钟前
基于MATLAB的IEEE 9节点系统潮流计算
开发语言·matlab
小郭团队25 分钟前
1_5_五段式SVPWM (传统算法反正切+DPWM1)算法理论与 MATLAB 实现详解
人工智能·嵌入式硬件·算法·dsp开发
分布式存储与RustFS31 分钟前
RustFS在AI场景下的实测:从GPU到存储的完整加速方案
开发语言·人工智能·rust·对象存储·企业存储·rustfs·minio国产化替代
我是小疯子661 小时前
Python3.11.4离线安装PyInstaller全攻略
python
揽昕1 小时前
判断对象是否含有某个属性
开发语言·前端·javascript
思成Codes1 小时前
ACM训练:接雨水3.0——动态接雨水
数据结构·算法
alphaTao1 小时前
LeetCode 每日一题 2026/1/12-2026/1/18
python·算法·leetcode
sin_hielo1 小时前
leetcode 2943
数据结构·算法·leetcode