c语言 函数递归(递推) 汉诺塔
汉诺塔(Hanoi)问题:有命名为 X、Y、Z 的三个塔座,在塔座 X 上套着 n 个大小不同的圆盘,现将 X 上的 n 个圆盘移至 Z 上。
移动时必须遵循以下规则:
① 一次只能移动一个圆盘;
② 任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。
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; }
代码:
-函数定义
-函数调用
-函数递归逻辑【最后一步 上一步...】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了