shell脚本编写汉诺塔
时间: 2023-11-15 21:02:11 浏览: 66
汉诺塔是一种经典的递归问题,可以用shell脚本来实现。下面是一个汉诺塔的shell脚本实现:
#! /bin/bash
function hanoi() {
local num=$1
if [ "$num" -eq "1" ];then
echo "Move:$2----->$4"
else
hanoi $((num-1)) $2 $4 $3
echo "Move:$2----->$4"
hanoi $((num-1)) $3 $2 $4
fi
}
hanoi $1 $2 $3 $4
这个脚本中,hanoi函数接受四个参数,分别是盘子的数量、起始柱子、中间柱子和目标柱子。如果盘子数量为1,则直接将盘子从起始柱子移动到目标柱子;否则,先将前n-1个盘子从起始柱子移动到中间柱子,再将最后一个盘子从起始柱子移动到目标柱子,最后将前n-1个盘子从中间柱子移动到目标柱子。
相关问题
python编写汉诺塔
以下是Python编写汉诺塔的代码:
```python
def hanoi(n, A, B, C):
if n == 1:
print('Move disk', n, 'from', A, 'to', C)
else:
hanoi(n-1, A, C, B)
print('Move disk', n, 'from', A, 'to', C)
hanoi(n-1, B, A, C)
n = int(input('Enter the number of disks: '))
hanoi(n, 'A', 'B', 'C')
```
运行代码后,程序会要求输入要移动的盘子数,然后按照汉诺塔的规则递归地输出每一步移动的过程。
例如,输入要移动3个盘子,输出如下:
```
Enter the number of disks: 3
Move disk 1 from A to C
Move disk 2 from A to B
Move disk 1 from C to B
Move disk 3 from A to C
Move disk 1 from B to A
Move disk 2 from B to C
Move disk 1 from A to C
```
编写shell脚本,要求完成汉诺塔,使用字母A,B,C表示
以下是一个简单的汉诺塔的Shell脚本,使用A、B、C表示塔:
```
#!/bin/bash
# 汉诺塔函数,参数分别为盘子数、起始柱子、辅助柱子、目标柱子
hanoi() {
if [ $1 -eq 1 ]; then
echo "Move disk from $2 to $3"
else
hanoi $(( $1 - 1 )) $2 $4 $3
hanoi 1 $2 $3 $4
hanoi $(( $1 - 1 )) $4 $3 $2
fi
}
# 调用汉诺塔函数,传入参数为3个盘子,A柱子为起始柱子,B柱子为辅助柱子,C柱子为目标柱子
hanoi 3 A B C
```
输出结果为:
```
Move disk from A to C
Move disk from A to B
Move disk from C to B
Move disk from A to C
Move disk from B to A
Move disk from B to C
Move disk from A to C
```
阅读全文