学习笔记------数据结构(C语言版)栈和递归 汉诺塔

//main.cpp

#include "predefined.h"
#include "SqStack.h"
int c=0;
void move(char a,int m,char b);
void hanoi(int n,char x,char y,char z);
int main()
{
	int n=5;
	char x='x';
	char y='y';
	char z='z';
	hanoi(n,x,y,z);
}

void hanoi(int n,char x,char y,char z)
//将塔座x上按直径由小到大且自上而下编号为1至n的n个圆盘按规则搬到
//塔座z上,y可用辅助塔座。
{
	if(n==1)
		move(x,1,z);
	else
	{
		hanoi(n-1,x,z,y);
		move(x,n,z);
		hanoi(n-1,y,x,z);
	}
}

void move(char a,int m,char b)
{
	printf("第%d步:将第%d个圆盘从%c移到%c\n",++c,m,a,b);
}

Ps:对这样一类递归问题编程时,不需用户自己而由系统来管理递归工作栈。

你可能感兴趣的:(学习笔记---数据结构)