002.cpp

来自「输入汉诺塔的总阶数」· C++ 代码 · 共 47 行

CPP
47
字号
//汉诺塔的问题
/*
将N个盘子从A针移动到C针可分为以下三个步骤、
《1》将A上的N-1个盘子移动到B针上
《2》将A上的第N个盘子移动到C针上
《3》将N-1个盘子从B针上移动到C针上
*/
#include <iostream>
using namespace std;
static int i=0;

void move(char getone,char putone)
{
	
	cout<<getone<<"-->"<<putone<<endl;
	i++;
	
}
void hanoi (int n, char one ,char two,char three)
{
   
	void move (char getone ,char putone);
	if (n==1)
	{
		move (one,three);	
	}

	else
	{
		hanoi(n-1,one,three,two);
		move (one ,three);
		hanoi(n-1,two,one,three);
	}
	
}

void main ()
{
	void hanoi (int n,char one ,char two, char three);
	int m;
	cout <<"Enter the number of diskes:\n";
	cin >>m;
	cout <<"the steps to moving "<<m<<"diskes:\n";
	hanoi(m,'A','B','C');
	cout <<"the moving degree is:"<<i<<endl;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?