zoukankan      html  css  js  c++  java
  • 充分利用自己的递归算法(三)

    一、递推算法的思想

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

    二、递归算法的特点

      (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个盘子的步骤如下:
    ", 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
    ", x, z);
        }
        else
        {
            move(n - 1, x, z, y);
            printf("%c-->%c
    ", x, z);
            {
                getchar();
                move(n - 1, y, x, z);
            }
        }
        return 0;
    }

      实现结果:

      (2)阶乘问题

       代码实现:

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

       实现结果:

      

  • 相关阅读:
    Eclipse背景颜色设置
    SQL ROW_NUMBER() OVER函数的基本用法用法
    hdu 2844 Coins 多重背包问题
    VC++学习/MFC (1)
    java学习 (1)
    hdu 1506 City Game 二维的多重背包
    java学习(2)
    VC++学习/MFC (2)
    hdu 1506 Largest Rectangle in a Histogram
    hdu 1171 Big Event in HDU
  • 原文地址:https://www.cnblogs.com/hxf175336/p/9849727.html
Copyright © 2011-2022 走看看