首页 > 系统服务 > 详细

linux shell之不使用局部变量的递归

时间:2021-04-10 00:44:44      阅读:16      评论:0      收藏:0      [点我收藏+]

vi function14.sh
#!/bin/bash

#初始化移动次数
mov=0

dohanoi()
{
if [ $1 -eq 0 ] #输入圆盘的个数为0
then
echo -n "" #将不会有输出
else
dohanoi "$(($1-1))" $2 $4 $3 #把A上的n-1个圆盘移到B上
echo "move $2----->$3"

let "move=move+1" #把A上的一个圆盘移到C上
dohanoi "$(($1-1))" $4 $3 $2 #把B上的n-1个圆盘移到C上
fi

if [ $# -eq 1 ] #递归函数出口
then
if [ $(($1-1)) -eq 1] #至少要有一个圆盘
then
dohanoi $1 A C B
echo "Total moves = $move"
else
echo "The number of disk which you input is illegal!"
fi
fi
}


#脚本调用函数
echo "Please input the num of disk: "
read num
dohanoi $num ‘A‘ ‘B‘ ‘C‘

 

 

./function14.sh
Please input the num of disk:
4
move A----->C
move A----->B
move C----->B
move A----->C
move B----->A
move B----->C
move A----->C
move A----->B
move C----->B
move C----->A
move B----->A
move C----->B
move A----->C
move A----->B
move C----->B

linux shell之不使用局部变量的递归

原文:https://www.cnblogs.com/zhudaheng123/p/14638506.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!