码迷,mamicode.com
首页 > 编程语言 > 详细

充分利用自己的递归算法(三)

时间:2018-10-25 15:39:01      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:调用   实现   开始   利用   image   div   png   表示   通过   

一、递推算法的思想

  有事不求人,遇到困难自己解决,即使难以解决也要硬着头皮去解决。

二、递归算法的特点

  (1)递归过程一般通过函数或子过程来实现。

  (2)递归算法在函数或子过程的内部,直接或间接地调用自己的算法。

  (3)递归算法实际上是把问题转化为规模缩小的同类子问题,然后再递归调用函数或过程来表示问题的解。

三、实例演练

  (1)汉诺塔问题

  代码实现:

#include "stdio.h"
int move(int n, int x, int y, int z);
int main()
{
    int h;
    printf("输入盘子的个数:");//提示输入盘子的个数
    scanf("%d", &h);
    printf("移动%2d个盘子的步骤如下:\n", h);
    move(h, a, b, c);//调用前面定义的函数开始移动,依次输出一定的步骤
    system("pause");
    return 0;
}

int move(int n, int x, int y, int z)
{
    if (n==1)
    {
        printf("%c-->%c\n", x, z);
    }
    else
    {
        move(n - 1, x, z, y);
        printf("%c-->%c\n", x, z);
        {
            getchar();
            move(n - 1, y, x, z);
        }
    }
    return 0;
}

  实现结果:

技术分享图片

  (2)阶乘问题

   代码实现:

#include "stdio.h"
int fact(int n);
int main()
{
    int i;
    printf("请输入要计算阶乘的一个整数:\n");
    scanf("%d", &i);
    printf("%d的阶乘%d!结果为:%d。\n", i, i,fact(i));
    system("pause");
    return 0;
}

int fact(int n)
{
    if (n<=1)
    {
        return 1;
    }
    else
    {
        return n*fact(n - 1);
    }

}

   实现结果:

  技术分享图片

 

充分利用自己的递归算法(三)

标签:调用   实现   开始   利用   image   div   png   表示   通过   

原文地址:https://www.cnblogs.com/hxf175336/p/9849727.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!