充分利用自己的递归算法

Posted hxf175336

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了充分利用自己的递归算法相关的知识,希望对你有一定的参考价值。

一、递推算法的思想

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

二、递归算法的特点

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

}

   实现结果:

  技术分享图片

 

以上是关于充分利用自己的递归算法的主要内容,如果未能解决你的问题,请参考以下文章

JavaJava_19递归算法

4.1算法递归 冒泡,选择插入排序

3.如何理解开多线程可以充分利用CPU?

JAVA递归算法

2_3 递归与分治策略(二分搜索技术)

你真的懂递归吗?