2025-03-13 02:14:59

📚✨汉诺塔:递归与非递归的Python魔法✨📚

导读 提到汉诺塔(Hanoi Tower),你是否立刻想到那层层叠叠的圆盘和经典的递归算法?没错,这是一款历史悠久的经典问题,而今天,我们用Python...

提到汉诺塔(Hanoi Tower),你是否立刻想到那层层叠叠的圆盘和经典的递归算法?没错,这是一款历史悠久的经典问题,而今天,我们用Python探索它的两种解法:递归与非递归!💡

首先,递归版本简单优雅,就像一只灵巧的小鸟,代码行数虽少,却能清晰地展现问题的本质👇

```python

def hanoi(n, src, dst, aux):

if n == 1:

print(f"Move disk 1 from {src} to {dst}")

return

hanoi(n-1, src, aux, dst)

print(f"Move disk {n} from {src} to {dst}")

hanoi(n-1, aux, dst, src)

```

但递归虽美,有时也显得笨重。这时,非递归解法登场啦!它像一位沉稳的智者,通过模拟栈的操作,将问题的每一步记录得明明白白👇

```python

def iter_hanoi(n):

stack = [(False, n, 'A', 'C', 'B')]

while stack:

finished, count, src, dst, aux = stack.pop()

if finished:

print(f"Move disk {count} from {src} to {dst}")

elif count == 1:

print(f"Move disk 1 from {src} to {dst}")

else:

stack.append((True, count, src, dst, aux))

stack.append((False, count-1, src, aux, dst))

stack.append((False, 1, src, dst, aux))

stack.append((False, count-1, aux, dst, src))

```

无论是递归还是非递归,汉诺塔都教会我们:复杂的问题也能化繁为简!🌈💪

Python 汉诺塔 算法优化 递归与非递归