编写shell脚本,要求完成汉诺塔,使用字母A,B,C表示
时间: 2024-05-06 22:16:51 浏览: 89
以下是一个简单的汉诺塔的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
```
相关问题
shell脚本编写汉诺塔
汉诺塔是一种经典的递归问题,可以用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个盘子从中间柱子移动到目标柱子。
用 shell 脚本写一个汉诺塔游戏。
好的,让我为您解答。以下是一个简单的 shell 脚本实现汉诺塔游戏:
```
#!/bin/bash
move(){
echo "moving from $1 --> $2"
}
hanoi(){
if [ $1 -eq 1 ]
then
move $2 $3
else
hanoi $(( $1 - 1 )) $2 $4 $3
move $2 $3
hanoi $(( $1 - 1 )) $4 $3 $2
fi
}
hanoi $1 A C B
```
在这个脚本中,我们定义了三个杆子,分别用 A, B 和 C 表示。在调用 hanoi 函数时,我们传递了三个参数:$1 表示盘子的数量,$2 表示开始的杆子,$3 表示目标杆子,$4 表示辅助杆子。在 hanoi 函数中,我们首先检查盘子的数量是否为 1,如果是,则直接将盘子从 $2 移动到 $3 上。如果不是,则递归地将 n-1 个盘子从 $2 移动到 $4 上,然后将最后一个盘子从 $2 移动到 $3 上,最后再将 n-1 个盘子从 $4 移动到 $3 上。
阅读全文