首页 > 编程知识 正文

汉诺塔递归理解,汉罗塔递归算法

时间:2023-05-04 02:09:22 阅读:242735 作者:4925

A是被转移的柱子 B是中间柱(转换站) C是转向的柱子
递归通过重复把问题分解为同类的子问题,通过解决子问题而解决掉问题的方式
在代码上看就是一个函数自己调用自己
如这个问题就是要移动盘子先得把上的n-1个盘子移动到B上;再是把B上的n-1个盘子移动到C上
这些仿佛回溯最后用到都都是 当只有一个盘子的时候 只需要把盘子从A->C

#include<iostream>#include<stdio.h>using namespace std;void H(int n,char A,char B,char C){if(n==1) printf("把%d号 从%c 移动到 %c n",n,A,C);else{H(n-1,A,C,B);printf("把%d号 从%c 移动到 %c n",n,A,C);H(n-1,B,A,C); }}int main(){int n=10 ;printf("输入盘子个数!n");H(n,'A','B','C');}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。