程序设计C语言-递归(汉诺塔)
来源:互联网 发布:等身抱枕 淘宝 编辑:程序博客网 时间:2024/05/17 01:02
#include <stdio.h>#include <stdlib.h>/*汉诺塔经典问题,递归操作,适用于100阶以内的汉诺塔问题*/int ary1[100], ary2[100], ary3[100]; //定义全局变量int N;//定义阶数int times;//定义计数器int main() {void print_hanoi(void);printf("几阶汉诺塔: ");scanf_s("%d", &N, 1);times = 0;//计数器置零for (int i = 1;i <= N;i++) {//汉诺塔A塔赋值ary1[i] = i;ary2[i] = 0;ary3[i] = 0;}void move(int n, int x[100], int y[100], int z[100]);//声明移动函数/*输出未移动的汉诺塔*/print_hanoi();printf("\n 已移动\t%d\t次\t\t按Enter键继续下一步", times);if (getchar() == '\n');/*输出移动一次的汉诺塔,ps:不知道为啥,没办法在move函数里实现,估计是键入几阶的‘\n’被识别为下一步的标记了*/print_hanoi();printf("\n 已移动\t%d\t次\t\t按Enter键继续下一步", times);if (getchar() == '\n');move(N,ary1,ary2,ary3);//调用移动函数print_hanoi();printf("\n已完成移动,共移动\t%d\t次\t\t按Enter键退出", times);if (getchar() == '\n');return 0;}void move(int n, int x[100], int y[100], int z[100]) {if (n > 1) {move(n - 1, x, z, y);z[n] = x[n];x[n] = 0;times += 1;//操作一次,计数器加一print_hanoi();printf("\n 已移动\t%d\t次\t\t按Enter键继续下一步", times);if (getchar() == '\n');move(n - 1, y, x, z);}else {z[1] = x[1];x[1] = 0;times += 1;//操作一次,计数器加一print_hanoi();printf("\n 已移动\t%d\t次\t\t按Enter键继续下一步", times);if (getchar() == '\n');}}void print_hanoi(void) {system("CLS");for (int i = 1;i <= N;i++) {printf("\t");if (ary1[i] != 0)printf("%d ", ary1[i]);printf("\t");if (ary2[i] != 0)printf("%d ", ary2[i]);printf("\t");if (ary3[i] != 0)printf("%d ", ary3[i]);printf("\n");}printf("==================================");}
0 0
- 程序设计C语言-递归(汉诺塔)
- c语言汉诺塔演示程序设计(基于堆栈、递归)
- C语言及程序设计进阶例程-7 递归经典:汉诺塔
- 【C语言】递归 - 汉诺塔
- C语言及程序设计进阶例程-5 认识递归
- 《C语言及程序设计》程序阅读——递归函数
- 《C语言及程序设计》实践项目——递归函数
- 《C语言及程序设计》实践参考——递归函数
- C语言及程序设计实践项目-递归和多文件组织
- C语言经典-----汉诺塔(递归)
- 《程序设计基础(C语言)》
- 汉诺塔递归的c语言实现(递归)
- 递归与尾递归(C语言)
- 递归与尾递归(C语言)
- 递归与尾递归(C语言)
- 递归与尾递归(C语言)
- 递归与尾递归 (C语言)
- 递归与尾递归(C语言)
- [C#]用API的方法解决X64系统注册表被重定向问题
- iOS - UI: 动画汇总一(学习日记)
- 福州某科技公司“数据仓库与数据挖掘”内训圆满结束!
- 仿hibernate,spring框架手动写
- Java中getResourceAsStream的用法
- 程序设计C语言-递归(汉诺塔)
- php函数小汇总(三)
- [从头学数学] 第04节 1~5的认识和加减法
- 互联网产品经理必备的工具
- jQuery 选择器总结
- python中创建字典的方法和迭代字典的方法
- iOS Label行间距
- css hack 大全
- perl 文本内容转hash数组