随笔 - 14  文章 - 0  评论 - 0  阅读 - 266

c语言 函数递归(递推) 汉诺塔

汉诺塔(Hanoi)问题:有命名为 X、Y、Z 的三个塔座,在塔座 X 上套着 n 个大小不同的圆盘,现将 X 上的 n 个圆盘移至 Z 上。


image.png

移动时必须遵循以下规则:

① 一次只能移动一个圆盘;

② 任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。

Y 是辅助塔座,用于移动过程中的过渡。


以下是递归求解汉诺塔问题的代码,请填写代码空格部分:

#include <stdio.h> //圆盘移动操作 void move(int n, char x, char z) { printf("move disk %d from %c to %c\n", n, x, z); } //n 阶汉诺塔问题 void Hanoi(int n, char x, char y, char z) { if(n==1)
3 分
else { 
3 分
//把x上编号为1到n-1的圆盘移到y上,z作为辅助 
3 分
//把编号为n的圆盘从x移到z 
3 分
//把y上编号为1到n-1的圆盘移到z上,x作为辅助 } } int main() { int n; scanf("%d", &n);//输入圆盘个数 Hanoi(n, 'X', 'Y', 'Z');//n阶汉诺塔 return 0; }


代码:
-函数定义
-函数调用
-函数递归逻辑【最后一步 上一步...】
posted on   qh2028  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示