益智汉诺塔的递推公式

这篇博客介绍了汉诺塔问题的解决原理,通过递归函数展示了如何将n层汉诺塔从柱子A移动到柱子C,同时经过柱子B,计算并打印了所需的最小步数。示例中以5层汉诺塔回归公式进行演示,总步数为(2^n) - 1,即31步。
摘要由CSDN通过智能技术生成

3c595a7f7b274350bc56169fe40aa618.jpg

还原动画演示 629beb31ae8f46229dd10bbdf66c4378.gif

            柱子A           柱子B             柱子C

 

 

原理很简单

--益智汉诺塔的递推公式

  local s=0 --累计步数
  local n=5 --求解的层数n
  local function move(pos1,pos3) 
     s=s+1  
    print("步数",s,pos1,"移动到>",pos3)
  end
 local function hanoi(n,pos1,pos2,pos3)
   if n==1 then move(pos1,pos3)
     else
     hanoi(n-1,pos1,pos3,pos2)
     move(pos1,pos3)
     hanoi(n-1,pos2,pos1,pos3)
     end
   if n==0 then return end
  end
print(n,"层汉诺塔,解法步骤--共计步数:",(2^n)-1)
 hanoi(n,"A","B","C")

286a0efe755d47dd8cba3253fb0c4bcb.jpg

c3a619f55d334f3eb99b133712d263f8.jpg 

 6ec62c6f233848c980f0eba07459e46c.jpg

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值