之前一直不能理解该问题的解决办法,也理解不了整个递推的过程。特别是几句犀利的代码,让我觉得难于理解。
今天在网上看了一个视频,让我大侧大悟。其实,递推揍是找: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 Tower)是一个经典的数学游戏,通常用三根柱子和一堆不同大小的盘子来演示。在VRML(Virtual Reality Modeling Language,虚拟现实建模语言)中,我们可以利用其3D场景构建能力来模拟这个游戏。VRML是...
---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码--- ---汉诺塔源代码---
`hanoi_tower`函数接收三个参数,表示起始柱、目标柱和辅助柱,通过递归调用来解决汉诺塔问题。 2. **递归逻辑**:在`hanoi_tower`函数中,基本思路是先将上层的n-1个圆盘从起始柱移动到辅助柱,然后将最底部的圆盘...
汉诺塔(Hanoi Tower)是一款经典的益智游戏,它基于递归算法,旨在通过一系列移动将所有盘子从一个柱子转移到另一个柱子。在这个“hanoi-tower.rar_汉诺塔”压缩包文件中,包含的是一个实现汉诺塔游戏基本功能以及...
汉诺塔(Hanoi Tower)算法是计算机科学中一个经典的递归问题,它源自印度的一个传说。这个程序演示了如何用VB.NET实现汉诺塔的解决方案。VB.NET是一种基于.NET框架的面向对象编程语言,由微软公司开发,常用于创建...
哈诺伊塔问题中的日期处理与存储过程设计 在哈诺伊塔问题中,我们遇到了日期处理和存储过程设计的问题。下面,我们将详细地剖析这两个问题,并提供相应的解决方案。 一、日期处理 在日期处理中,我们需要计算每个...
汉诺塔(Hanoi Tower)是一个经典的递归问题,源于19世纪的法国数学家艾德蒙·朗利。在C语言中实现汉诺塔程序,可以深入理解递归算法和函数调用的过程。汉诺塔游戏有三个柱子和一堆盘子,目标是将所有盘子从柱子A...
汉诺塔游戏是一款经典的逻辑与递归问题,源自印度古老传说,它在计算机科学和编程教育中占有重要地位。这个游戏的目标是将一个柱子上的所有盘子,通过另外两个柱子作为辅助,按照大小顺序从底部移动到另一个柱子上。...
标题"汉诺塔-master.rar_C汉诺塔_educationwbg"表明这是一个关于C语言实现汉诺塔问题的代码库。"educationwbg"可能是指教育资源或某个教育项目的一部分,旨在帮助学习者理解递归算法和汉诺塔问题。 描述中提到的...
汉诺塔(Hanoi Tower)是一个经典的递归问题,它涉及到将一个柱子上的所有圆盘按照大小顺序,从最底部开始,通过另外两个柱子的辅助,全部转移到第三个柱子上,且任何时候都不能有较大的圆盘位于较小的圆盘之上。...
汉诺塔是一个经典的问题,源于印度的一个传说,它在数据结构设计中被广泛用来教授递归和算法思想。本报告将详细阐述如何利用数据结构来解决汉诺塔问题。 一、汉诺塔问题描述 汉诺塔问题由三个塔座A、B、C构成,塔座...
汉诺塔(Hanoi Tower)是一个经典的递归问题,它源于19世纪的法国数学家爱德华·卢卡斯。MFC(Microsoft Foundation Classes)是微软提供的一个C++库,用于开发Windows应用程序。本教程将详细介绍如何使用MFC来实现...
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠...
汉诺塔(Hanoi Tower)是一个经典的递归问题,它源于印度的一个传说,涉及三个柱子和一堆大小不一的圆盘。目标是将所有圆盘从一个柱子(源柱)移动到另一个柱子(目标柱),但每次只能移动一个圆盘,并且任何时候大...
汉诺塔(Hanoi Tower)是一个经典的递归问题,源于19世纪法国数学家爱德华·卢卡斯提出的一个智力游戏。这个问题涉及到三个柱子和一堆大小不一的圆盘,目标是将所有圆盘从一个柱子移动到另一个柱子,每次只能移动一...
汉诺塔问题是一种经典的递归算法问题,源自印度的一个古老传说。它涉及到将一堆盘子从一根柱子移动到另一根柱子,遵循以下规则: 1. 任何时候,盘子必须保持在柱子上。 2. 一次只能移动一个盘子。 3. 盘子不能被比...
汉诺塔(Hanoi Tower)是一个经典的递归问题,源于19世纪法国数学家爱德华·卢卡斯提出的智力游戏。游戏的目标是将一座由大小不等的圆盘堆叠而成的塔从一个柱子(起始柱)移动到另一个柱子(目标柱),在移动过程中...
首先,我们来深入探讨一下汉诺塔问题及其解决方案。 汉诺塔是一个经典的递归问题,由三个柱子和一堆大小不一的圆盘组成。目标是将所有圆盘从第一个柱子移动到第三个柱子,但每次只能移动一个圆盘,并且任何时候大...
汉诺塔(Hanoi Tower)问题是由数学家Édouard Lucas在1883年提出的。问题描述中,有一座梵塔(梵天塔),塔内有三个座A、B、C,开始时A座上有n个盘子,最大的在下,最小的在上,形状类似一个金字塔。目标是将这n个...
在Java编程中实现汉诺塔游戏,我们可以采用递归算法来解决这个问题。 首先,我们需要创建一个Java程序,它包含一个主类,例如`HanoiTower`,在这个类中我们将定义汉诺塔游戏的核心逻辑。在`HanoiTower`类中,我们...