C/C++求汉诺塔递归深度,步数,移动的轨迹

时间:2022-03-29作者:klpeng分类:IT综合浏览:387评论:1

 盘子为1~n,柱子号为1 2 3.从1号n个盘子,递归后有序放在3号。
 代码:

#include <iostream>
using namespace std;

int n ;
int count = 1 ;
void move(int disk , int  a , int b){
	
	printf("深度:%d,步数:%d,盘子:%d 从%d -> %d\n",n-disk+1,count,disk,a,b);
	count++;
}
void hanoi(int disk ,int a , int  c , int  b){
	if(disk == 1 ) move(1,a,c);
	else{
		hanoi(disk-1,a,b,c);
		move(disk,a,c);
		hanoi(disk-1,b,c,a);
	}
}

int main()
{
	cout<<"请输入盘子的个数: "; 
	cin>> n;
	hanoi(n,1,3,2);
   	return 0;
}

 运行示例:
C/C++求汉诺塔递归深度,步数,移动的轨迹

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

  • 评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢