| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 758 人关注过本帖
标题:汉诺塔问题完全搞不懂
只看楼主 加入收藏
a447340229
Rank: 2
等 级:论坛游民
帖 子:22
专家分:19
注 册:2012-12-18
收藏
得分:0 
首先你得知道原理:N个汉诺塔问题可以转换成:1 先把N-1个塔从A搬到B.2 把最下面的盘搬到C3 把N-1个盘从B搬到C上面的程序就是利用这个原理:假若有4个盘子:hanoi( 4, 'A', 'B', 'C' )会执行:4不等于1,所以执行else =>hanoi( 4- 1, 'A', 'C', 'B' );    .....1 move( 'A','C' );                   .....2hanoi( 4 - 1, 'B','A', 'C' );      ......3在执行第1句时,调用递归:hanoi( 3, 'A', 'C', 'B' ); 这个又调用hanoi函数:3不等于1,所以执行else =>hanoi( 3- 1, 'A' ,'B','C' );    .....4 move( 'A','B');                   .....5hanoi( 3 - 1, 'C','A', 'B' );      ......6在执行第4句时,调用递归:hanoi( 2, 'A' ,'B','C' );这个又调用hanoi函数:2不等于1,所以执行else =>hanoi( 2- 1, 'A','C','B');    .....7move( 'A','C');                   .....8hanoi( 2 - 1, 'B','A','C');      ......9执行第7句时,调用递归:hanoi( 1, 'A','C','B');这个又调用hanoi函数:等于1,打印A-->B,此次调用完毕,转到第8句,打印A->C,再执行第9句:hanoi( 1, 'B','A','C');等于1,所以move(one,three),即B->C注意,这时候又回到了第5句(因为第4句包含的7,8,9全部执行完了):B-A依此类推...

每个月总有那么几天要上论坛好好学习学习。。
2012-12-18 16:03
快速回复:汉诺塔问题完全搞不懂
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029796 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved