之前一直不能理解该问题的解决办法,也理解不了整个递推的过程。特别是几句犀利的代码,让我觉得难于理解。
今天在网上看了一个视频,让我大侧大悟。其实,递推揍是找:f(n)与f(n - 1)的关系和递归终止条件。明白这点,遂去解汉诺塔问题。一切就迎刃而解了。
OK,这里我贴上C-递归算法视频教程的地址,以及Hanoi问题的解法(C语言描述)。希望能对广大难以理解递归的朋友有所帮助。
http://v.ku6.com/show/gxPrphkI4FZ_kbYb.html
/*
** File name: Hanoi.c
** Author: ZhouFeng
** Date: 2012/04/12
*/
#include <stdio.h>
void Hanoi(int n, char A, char B, char C, int *nCount);
int main(int argc, char* argv[])
{
int nCount = 0;
Hanoi(3, 'A', 'B', 'C', &nCount);
printf("Times: %d\n", nCount);
return 0;
}
/*
** A -- Start Peg
** B -- Aux Peg
** C -- To Peg
*/
void Hanoi(int n, char A, char B, char C, int *nCount)
{
if(n == 1)
{
printf("Move disk %d from %c to %c.\n", n, A, C);
++(*nCount);
return;
}
Hanoi(n - 1, A, C, B, nCount);
printf("Move disk %d from %c to %c.\n", n, A, C);
++(*nCount);
Hanoi(n - 1, B, A, C, nCount);
}
分享到:
相关推荐
---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码---
hanoi塔问题.dochanoi塔问题.doc
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠...
实现汉诺塔基本功能与搬运动画,让玩家自己玩游戏的过程
汉诺塔的具体算法,也就是圆盘转移相关问题
汉诺塔简单实现,仅为测试使用。两个文件均能实现汉诺塔功能
汉诺塔 演示程序 二叉树 演示动画 实现动态的观看到汉诺塔的盘子移动过程,动态的观看到树的遍历过程,树的查找过程
Hanoi(分治法之汉诺塔) 计算机算法设计与分析实验,分治法实现汉诺塔 mfc编程,用多线程解决了界面卡的问题 vc6.0中编译通过
著名的汉诺塔问题编码,用C++写的,简单明了
利用状态空间法对汉诺塔定义状态,用广度优先的方法解决汉诺塔问题,人工智能.(属于学校学习课程所做,非商业内容)
汉诺塔算法演示,用OPENGL开发,每点击一次鼠标左键可以看到演示的每一步,点击右键复原。
hanoi,汉诺塔问题,汇编语言经典解法,利用递归调用,经典
汉诺(Hanoi)塔问题
android hanoi 汉诺塔源码 postInvalidate PreferenceActivity SharedPreferences
汉诺塔非递归程序,包含详细的解析、代码、结果及心得
在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好...故汉诺塔问题又被称为“世界末日问题。”
二、实验内容或题目 汉诺塔问题。程序结果:给出程序执行过程中栈的变化过程与圆盘的搬动状态。 三、实验步骤与源程序 源程序: / *编译环境Visual C++6.0 */ #include "stdafx.h" #include<stdio.h> #include...
汉诺塔的非递归实现,希望可以帮助大家学习一下哦
Hanoi(汉诺)塔问题。这是一个古典的数学问题,是一个用递归方法解决问题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座A、B、C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚...
博文链接:https://hidefromall.iteye.com/blog/240898