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; }
代码:
-函数定义
-函数调用
-函数递归逻辑【最后一步 上一步...】
浙公网安备 33010602011771号