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);
        }
    
    }

       实现结果:

      

  • 相关阅读:
    CSS3中制作倒影box-reflect
    JS中==与===区别
    CSS3-Animation
    CSS3-transform
    CSS3-transition
    CSS盒模型-box-sizing
    css兼容处理-hack
    CSS3-rgba
    CSS3-文本-word-wrap,word-break,white-space
    CSS3-文本-text-shadow
  • 原文地址:https://www.cnblogs.com/hxf175336/p/9849727.html
Copyright © 2011-2022 走看看