递归学习:
[]: https://www.iamshuaidi.com/272.html
汉诺塔问题
[]: https://blog.csdn.net/qq_53162179/article/details/126682456
#include <stdio.h>
int hnt(int n,char start,char destination,int spar) {
if (n == 1) {
printf("把第%d个从%c移动到%c\n", n, start, destination);
return 1;
}
// 移动 n-1 个盘子到辅助柱子
int step1 = hnt(n - 1, start, spar, destination);
// 移动第 n 个盘子到目标柱子
printf("把第%d个从%c移动到%c\n", n, start, destination);
// 移动 n-1 个盘子从辅助柱子到目标柱子
int step2 = hnt(n - 1, spar, destination, start);
// 返回总的移动次数
return step1 +step2 +1 ;
}
int main() {
printf("总共需要%d步",hnt(3, 'A', 'C', 'B'));
return 0;
}
约瑟夫问题
[]: