递归算法—输入字母逆序输出&汉诺塔递归算法

来源:互联网 发布:淘宝达人链接 编辑:程序博客网 时间:2024/06/05 06:04

1.概念

递归——将一个大的问题分解成比较小的、有着相同形式的问题。递归是一种强有力的思想。在计算机科学的学习中,一个重要的必须学习的概念是递归。递归是一种编程策略,它把一个大的问题分解成具有相同形式的简单问题。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

2.代码

1)递归实现输入字母逆序输出

#include <stdio.h>void print(){char a;scanf("%c", &a);if (a != '#') print();if (a != '#') printf("%c", a); //倒着打印出输入字符}int main(){printf("输入字符,以 # 结束。 \n");while (1){print();}return 0;}


2)汉诺塔递归算法

#include <stdio.h>//将 n 个盘子从 x 借助 y 移动到 zvoid move(int n, char x, char y, char z){if (1 == n){printf("%c--->%c\n", x, z);}else{move(n - 1, x, z, y);      //将n-1个盘子从 x  借助 z 移动到 yprintf("%c--->%c\n", x, z);  //将第n - 1个盘子从 x 移动到 zmove(n - 1, y, x, z);      //将 n - 1 个盘子从 y 借助 x 移动到 z}}int main(){int n;printf("输入汉诺塔层数:");scanf("%d", &n);printf("移动步骤如下:\n");move(n, 'x', 'y', 'z');return 0;}


3.结果



原创粉丝点击