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 2024-12-18 10:39  qh2028  阅读(65)  评论(0)    收藏  举报