Tag Archives: 递归

数据结构重读 – 递归与汉诺塔

堆栈与递归是相辅相成的。

比如Fibnacci数列就是递归定义:

Fib(n) = Fib(n-1) + Fib(n-2) (n>=2) Fib(0) = 0 Fib(1) = 1

Fibnacci数列:1, 1, 2, 3, 5, 8, 13, 21, ....

说到这里再写个Fibnacci的通项公公式:

这个还是很无敌的……

然后再一个例子是书上的Ackerman函数:

 

转回经典的汉诺塔问题:假设有三个命名为X,Y[......]

继续阅读

《数据结构》读书笔记 第三章 非循环顺序队列2

比起第一个顺序非循环队列,这个是浪费空间,节约时间版本~
Queue.h:定义了队列的基本操作
#include <iostream>
enum {OK=0,WRONG=-1};
enum {QIS=10,QI=2};
typedef int Elem;
typedef int Status;
typedef struct
{
 Elem *base;
 int front;
 int rear;
 int qsize;
}Q[......]

继续阅读

迷宫问题的递归c++实现

迷宫问题问题描述:把一只小白鼠放入一个迷宫,问能否找到一条路让小白鼠出来。迷宫用数组表示。能通过则给出图……
不同于上次用栈实现,这里的“栈”自动地由系统分配,So……
 
#include <iostream>
struct Pos
{
 int x;
 int y;
};
int map[7][7]={{0,0,0,0,0,0,0},{0,1,0,1,1,1,0}[......]

继续阅读

《数据结构》递归实现汉诺塔

main.cpp:汉诺塔实现。
思路分析:
若n=1,则只需把盘子从a挪动到c
若n>1,
(1)把前n-1个盘子从a经过c挪动到b
(2)把第n个盘子从a挪动到c
(3)把前n-1个盘子从b经过a挪动回c
实现:
#include <fstream>
#include <iostream>
using namespace std;
ofstream fout("out.txt");
void Move(int n,char x,char y[......]

继续阅读