开发者社区> 问答> 正文

用Linux shell脚本编程实现汉诺塔的递归算法

1.通过脚本参数来确定汉诺塔的数量2.利用函数递归调用实现

展开
收起
知与谁同 2018-07-20 19:40:29 2532 0
1 条回答
写回答
取消 提交回答
  • #!/bin/bash
    E_NOPARAM=66
    E_BADPARAM=67
    Moves=0
    dohanoi(){
    case $1 in
    0)
    ;;
    *)
    dohanoi "$(($1-1))" $2 $4 $3
    echo move $2 "-->" $3
    let "Moves += 1"
    dohanoi "$(($1-1))" $4 $3 $2
    ;;
    esac
    }
    case $# in
    1)
    case $(($1>0)) in
    1)
    dohanoi $1 1 3 2
    echo "Total moves = $Moves"
    exit 0;
    ;;
    *)
    echo "$0: illegal value for number of disks"
    exit $E_BADPARAM;
    ;;
    esac
    ;;
    *)
    echo "usage: $0 N"
    echo "Where \"N\" is the number of disks"
    exit $E_NOPARAM;
    ;;
    esac
    2019-07-17 22:55:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载