益智玩具 汉诺塔( 四 )

php简单的用php实现了汉诺塔问题的求解,使用递归调用,但是用php实现要是盘子的个数很多的话,运行起来会很慢的...汉诺塔主要是有三个塔座X,Y,Z,要求将三个大小不同,依小到大编号为1,2.....n的圆盘从A移动到塔座Z上,要求(1):每次只能移动一个圆盘(2):圆盘可以插到X,Y,Z中任一塔座上(3):任何时候不能将一个较大的圆盘压在较小的圆盘之上主要是运用了递归的思想,这里使用php做个简单的实现...... <?php function hanoi($n,$x,$y,$z){     if($n==1){         move($x,1,$z);     }else{         hanoi($n-1,$x,$z,$y);         move($x,$n,$z);         hanoi($n-1,$y,$x,$z);     } } function move($x,$n,$z){     echo'movedisk'.$n.'from'.$x.'to'.$z.'<br>'; } hanoi(10,'x','y','z'); ?>pascalvar m:integer;procedure move(getone,putone:char);begin writeln(getone,'->',putone) end;procedure hanoi(n:integer;one,two,three:char);beginif n=1 then move(one,three) elsebeginhanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three)endend;beginreadln(m);write('the step to moving disks:');writeln;hanoi(m,'A','B','C')end.Lua【益智玩具 汉诺塔】function hanoi(num, a,b,c)  if (num == 1) then        print(a .."-->"..c)  else         hanoi(num-1, a,c,b)        print(a .."-->"..c)    hanoi(num-1, b,a,c)   endendhanoi(3,'A','B','C')易语言子程式 汉诺塔盘子运动 .参数 盘子数,整数型.参数 柱子甲,文本型.参数 柱子乙,文本型.参数 柱子丙,文本型.如果 (盘子数 = 1)' 如果只有一个盘,则直接将它从柱子一移动到柱子三移动 (1,柱子甲,柱子丙).否则' 把1 ~ n - 1个盘从柱子一移动到柱子二,用柱子三作为中转汉诺塔盘子运动 (盘子数 - 1,柱子甲,柱子丙,柱子乙)' 把第n个盘从柱子一移动到柱子三移动 (盘子数,柱子甲,柱子丙)' 把1 ~ n - 1个盘从柱子二移动到柱子三,用柱子一作为中转汉诺塔盘子运动 (盘子数 - 1,柱子乙,柱子甲,柱子丙).如果结束.子程式 移动.参数 盘子号,整数型.参数 甲柱子,文本型.参数 乙柱子,文本型路径 = 路径 + “步骤” + 到文本 (步骤) + “:” + “把” + 到文本 (盘子号) + “号圆盘从柱子 ” + 甲柱子 + “ 移动到” + 乙柱子 + “上 ” + #换行符步骤 = 步骤 + 1.子程式 _计算图形按钮_被单击.局部变数 盘子总数,整数型.局部变数 现在柱子,文本型.局部变数 中间柱子,文本型

益智玩具 汉诺塔

文章插图
易语言--hanoi.局部变数 目标柱子,文本型' 把盘子编辑框.内容传给现在柱子现在柱子 = 盘子编辑框.内容' 把中间编辑框.内容传给中间柱子中间柱子 = 中间编辑框.内容' 把目标编辑框.内容传给目标柱子目标柱子 = 目标编辑框.内容.如果真 (到数值 (现在柱子) ≤ 0 或 到数值 (中间柱子) ≤ 0 或 到数值 (目标柱子) ≤ 0 或 到数值 (个数编辑框.内容) ≤ 0 或 到数值 (个数编辑框.内容) > 10)信息框 (“柱子或圆盘数量只能是大于0小于10的数字!”,#错误图示,“出现错误了:”)返回 ().如果真结束盘子总数 = 到数值 (个数编辑框.内容)结果编辑框.内容 = “”路径 = “”' 首次调用汉诺塔盘子运动 ()程式汉诺塔盘子运动 (盘子总数,现在柱子,中间柱子,目标柱子)结果编辑框.内容 = 路径步骤 = 1JavaScriptvar hanoi=function(n,from,ass,to){  if(n>0){    hanoi(n-1,from,to,ass);    move(n,from,to);    hanoi(n-1,ass,from,to);  }}var move=function(n,from,to){ console.log("移动第"+n+"个从"+from+"到"+to);}hanoi(3,"A","B","C");