递归的两个特点:
- 调用自身
- 结束条件
先打印后递归 和 先递归后打印的区别
结果: 3 2 1 和 1 2 3
汉诺塔问题:
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。
n=2 :
- 把小圆盘从A移动到B
- 把大圆盘从A移动到C
- 把小圆盘从 B移动到C
n:
- 把n-1个圆盘从A经过C移动到B
- 把第n个盘子从A移动到C
- 把n-1个盘子从B经过A移动到C
#include<iostream>
using namespace std;
void hanoi(int n,char A,char B,char C){
if(n>0){
hanoi(n-1,A,C,B);
cout<<"Moving from "<<A<<" to "<<C<<endl;
hanoi(n-1,B,A,C);
}
}
int main(){
int n;
char a='A',b='B',c='C';
cin>>n;
hanoi(n,a,b,c);
return 0;
}
标签:递归,--,hanoi,char,圆盘,汉诺塔,移动 来源: https://blog.csdn.net/m0_48044428/article/details/123138943
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。