开发者社区> 问答> 正文

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

知与谁同 2018-07-20 19:40:29 407
1.通过脚本参数来确定汉诺塔的数量2.利用函数递归调用实现
算法 Shell Linux
分享到
取消 提交回答
全部回答(1)
  • 青衫无名
    2019-07-17 22:55:27
    #!/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
    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题