2 hiauthur HIAUTHUR 于 2016.02.03 20:23 提问

这个汉诺塔问题理解起来咋那m难,怎么样得出结果的

源代码如图。图片

2个回答

91program
91program   Ds   Rxr 2016.02.03 20:36
已采纳

你先要理解算法了文字描述,这样看代码实现才有可能理解。
另外,你需要理解递归算法的实现原理。

HIAUTHUR
HIAUTHUR 太感谢了。
2 年多之前 回复
HIAUTHUR
HIAUTHUR 谢谢您指导,感谢。
2 年多之前 回复
91program
91program 回复HIAUTHUR: a和b其实只是变量名,其实际的含义是递归函数的第二和第三个参数。这时,你再看递归调用第二处的第二和第三个参数是什么?正好是 c 和 b,也就是你所说的。
2 年多之前 回复
91program
91program 回复HIAUTHUR: 这个需要你理解两个递归调用的参数。
2 年多之前 回复
HIAUTHUR
HIAUTHUR 有一点儿特别不理解,代码中没有一个输出函数是输出c--b的,但是结果是怎么得出的,求指教,谢谢了。
2 年多之前 回复
HIAUTHUR
HIAUTHUR   2016.02.03 20:41

有一点儿特别别扭,代码中根本没有一个输出函数是输出c_b的,结果中是怎么出来的?

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于python汉诺塔问题的代码消化理解
汉诺塔问题来了: 我们对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为: 如果a只有一个圆盘,可以直接移动到c; 如果a有N个圆盘,可以看成a有1个圆盘(底盘) + (N-1)个圆盘,首先需要把 (N-1) 个圆盘移动到 b,然后,将 a的最后一个圆盘移动到c,再将b的(N-1)个圆盘移动到c。 请编写一个函数,给定输入 n, a, b, c,打印出移动的步骤: move(
汉诺塔问题的简单理解和总结
问题: 3个塔a、b、c,n个碟子。 初始——所有碟子放在a号塔,大的在底下,小的在上面 任务——把碟子移动到c号塔,顺序不变,可用b号塔辅助 限制——每次只能移动一个碟子,总是大碟子在下,小的在上   思想:递归 移动次数:f(n) = 2*f(n-1)+1 (n>1) ->  f(n)=2^n-1   解法: ①把a上的n-1(递归n-2/n-3/n-4/2-1,2-1即两
困扰很久的汉诺塔问题c语言实现
#include #define P1 1 #define P2 2 #define P3 3 void hannuota(int n,int a,int b,int c){     if(n>=1){     hannuota(n-1,a,c,b);     printf("%d(%d->%d)\n",n,a,c);     hannuota(n-1,b,a,c);
2017.11.3 N盘M柱汉诺塔问题通解 DP 解题报告
题目描述众所周知, 汉诺塔是一个古老又经典的游戏. 这个游戏是这样的, 你有N个大小不同的盘子和3根柱子, 一开始所有盘子都叠放在第1根柱子上, 你需要把N个盘子全都移动到第3根柱子上, 每次都可以选择某根柱子最上面的盘子移动到另一根柱子上, 但是任何时候都必须保证没有一个盘子上面放了一个比它大的盘子. 求最少的移动步数. 这个问题太简单了, 乐于寻找挑战的你想要求出当有N个盘子, M个柱子且其他
通过汉诺塔问题理解递归的精髓
汉诺塔问题介绍: 在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片,一次只移动一片,不管在哪根针上,小片必在大片上面。当所有的金片都从梵天穿好的那根针上移到另外一概针上时,世界就将在一声
(优秀汉诺塔算法)对汉诺塔经典递归问题的理解与讲解(部分引用大神代码,附链接。)
博客大神的优秀汉诺塔代码:喜欢特别冷的冬天下着雪   (侵权联系) 本文只是在大神思路的基础上加以理解。 [cpp] view plain copy  print? #include    //第一个塔为初始塔,中间的塔为借用塔,最后一个塔为目标塔   int i=1;//记录步数   void move(int n,char from,char 
关于汉诺塔多柱移动问题
多柱汉诺塔最优算法设计探究   引言 汉诺塔算法一直是算法设计科目的最具代表性的研究问题,本文关注于如何设计多柱汉诺塔最优算法的探究。最简单的汉诺塔是三个柱子(A、B、C),因此多柱汉诺塔的柱子个数M≥3。下面从三柱汉诺塔说起,慢慢深入我们要关心的问题。 1. 三柱汉诺塔 三柱汉诺塔是经典的汉诺塔问题,在算法设计中是递归算法的典型问题。其算法是这样的: 首先把A 柱上面的n-1 个碟子通
变种汉诺塔问题
变种汉诺塔问题Description变种汉诺塔问题和传统汉诺塔问题类似,规则描述如下: 1. 有三根柱子,从左到右编号为0、1、2。最左侧0号柱子上放置着若干圆盘。与传统汉诺塔不同的是,其中存在部分大小相同的圆盘。 2. 要求包括初始状态在内,每个圆盘上方放置的圆盘不得大于该圆盘,即圆盘上方只能放置小于自己或和自己相同大小的圆盘 3. 每次移动只能将某柱子最顶部的一个圆盘移动到另一柱子的
Python中汉诺塔问题的理解
本文转自知乎答案:https://www.zhihu.com/question/37152936/answer/149521436作者主页地址:https://www.zhihu.com/people/skhizein2014/activities作者:半岛-----------------------------------------------------------------------
hdu 1207 汉诺塔2(dp+经典汉诺塔模型)
汉诺塔II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5810    Accepted Submission(s): 2834 Problem Description 经典的汉诺塔问题经常作为一个递归的经典例题存在。