数据结构--汉诺塔
经典的递归问题:汉诺塔上代码:#include <stdio.h>#include <stdlib.h>int time=0;void move(int n,char start,char transfer,char objective){time++;if (n==1){printf("%c-->%c\n",start,objective);}else{move(n
·
经典的递归问题:汉诺塔
上代码:
#include <stdio.h>
#include <stdlib.h>
int time=0;
void move(int n,char start,char transfer,char objective){
time++;
if (n==1){
printf("%c-->%c\n",start,objective);
}
else
{
move(n-1,start,objective,transfer);
printf("%c-->%c\n",start,objective);
move(n-1,transfer,start,objective);
}
}
tesksample(int q){
printf("%d层的汉诺塔:\n移动情况:\n",q);
move(q,'a','b','c');
printf("一共移动了%d次",time);
time=0;
}
int main(){
tesksample(3);
return 0;
}
运行结果:
总结:
汉诺塔问题被称为智商的分界线,也不是没有道理,理解不到的感觉难如登天,理解到了就会感觉很简单。本问题的关键在于理解到三个杆在不断的递归中其充当的角色(起始杆,中转杆,目的杆)也在不断改变。
详细可以参考一下:BV13g41157wn

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)