汉诺塔问题(这只是一个总结想要学会可以看一下我推荐博主的,看不懂可以来看看这个)
汉诺塔是采用递归的方式来解题的先定义一个函数,随后在后续操作中无限的回代定义的函数,
#include<iostream>
using namespace std;
void hannoi(int n, char A, char B, char C) {//n个盘子,起始位置,中转位置,终止位置
if (n == 1) {
cout << "将圆盘" << n << "从" << A << "移动到" << C << endl; //第二步 将最后一个盘子从A移动到C
}
else {
hannoi(n - 1, A, C, B); //第一步 将n-1个盘子从A移动到B
cout << "将圆盘" << n << "从" << A << "移动到" << C << endl;
hannoi(n - 1, B, A, C); //第三步 将n-1个盘子从B移动到C
}
}
int main()
{
int n;
cout << "请输入A上圆盘n的个数:";
cin >> n;
cout << endl;
hannoi(n, 'A', 'B', 'C');
return 0;
}
假如输入的是3那么就执行第二的语句,可是后面是2依旧不满足,随后继续执行第二个语句,随后等于1,最后执行第一条语句随后依次往上执行未执行的语句