大吉大利,今晚吃鸡 ——麻烦大佬这递归为啥是错的,求指点

#include <bits/stdc++.h>
using namespace std;
long long ans;
void hanio(int n,char a,char b,char c)//把n个盘子借助b柱子从a移动到c 
{
	if(n==0) return;
	hanio(n-1,a,c,b);
	hanio(n-1,b,a,c);
//	move(a,b);
	ans++;
	hanio(n-1,c,a,b);
	hanio(n-1,b,c,a);
	//move(b,c)
	ans++;
	hanio(n-1,a,c,b);
	hanio(n-1,b,a,c);
	
} 
int main()
{
   	int n;
   	while(cin>>n)
   	{
   	ans=0;
   	hanio(n,'a','b','c');
   	cout<<ans<<endl;	
	}
	return 0; 
}

全部评论
现在回复的有点晚,不知道对你有没有用。 我直接用n=2带进去发现,结果为15,然后我手动移只有8。 于是我分析了一下,你一个hanio就直接算出了从a移到c或者从c移到a了,不需要再经过b。 所以六个hanio删掉一半就行。
点赞 回复 分享
发布于 2021-09-11 12:56

相关推荐

10-15 20:01
已编辑
上海大学 Java
钉钉什么垃圾公司,约面鸽人
Syca_:途虎养车给我定了我这边早上六点的笔试,睡了四个小时起来难受的要命,告诉我面试时间是两天后的凌晨四点
点赞 评论 收藏
分享
10-13 13:42
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务