正经题解|A559汉诺塔
2026-07-18 18:08:28
发布于:浙江
52阅读
0回复
0点赞
正经题解|A559汉诺塔
这道题是递归入门题,写个自定义函数就可以了。不会的看代码
本人是蒟蒻,大佬请多多指点
#include<bits/stdc++.h>
using namespace std;//↓起点 ↓借用 ↓终点 (不会真的有人有人看不懂下面的变量名吧)
void han(int sum,char qidian,char jieyong,char zhongdian){//为了防止“莫”(是codeone里的同学)些人说是AI生成,在此批注。想法是AI给的,代码是自己写的。并且我理解了代码!
if(sum==1){
cout<<qidian<<' '<<"->"<<' '<<zhongdian<<endl;
return;//只剩一个汉诺盘的时候,直接结束本次递归调用
//由于是void函数,所以没有返回值
}
han(sum-1,qidian,zhongdian,jieyong);//先把sum-1个汉诺盘移到“jieyong”上(注意!此处的jieyong只是变量名,看不懂的请对照第3行看看形参)
cout<<qidian<<' '<<"->"<<' '<<zhongdian<<endl;//把最大的移到最后一行
han(sum-1,jieyong,qidian,zhongdian);//把剩下的在“jieyong”上的借用“qidian”移到“zhongdian”(这里也确实是终点)(不懂的请对照第3行看看形参)
}
int main(){
int n;
cin>>n;
han(n,'A','B','C');//调用我们自己写的函数
return 0;//写return 0是好习惯
}
点个赞吧😭🙏🙏🙏
这里空空如也







有帮助,赞一个