【C语言递归】

目录

一、递归的概念

二、算法思想

三、递归算法的设计要素

四、递归算法的经典实例

1、数的阶乘

2、斐波那契数列

总结


一、递归的概念

递归作为一种算法在程序设计语言中广泛应用,是一种直接或者间接调用自身函数或者方法的算法。说简单 了就是程序自身的调用。递归算法的实质将原来的问题转化为更小的同一问题,然后递归调用方法来表示问 题的解。

二、算法思想

递归算法,顾名思义就是有两个大的阶段:递和归,即就是有去(递去)有回(归来)。 递去:将递归问题分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题 思路来解决 归来:当你将问题不断缩小规模递去的时候,必须有一个明确的结束递去的临界点(递归出口),一旦 达到这个临界点即就从该点原路返回到原点,最终问题得到解决。

三、递归算法的设计要素

递归思维是一种从顶向下的思维方式,使用递归算法往往可以简化我们的代码, 而且还帮我们解决了很复杂 的问题。递归算法的难点就在于它的逻辑性,一般设计递归算法需要考虑以下几点: 明确递归的终止条件 提取重复的逻辑,缩小问题的规模不断递去 给出递归终止时的处理办法。

四、递归算法的经典实例

1、数的阶乘

#include 
 
double factorial(unsigned int i)
{
   if(i <= 1)
   {
      return 1;
   }
   return i * factorial(i - 1);
}
int  main()
{
    int i = 15;
    printf("%d 的阶乘为 %f\n", i, factorial(i));
    return 0;
}

2、斐波那契数列

#include 
 
int fibonaci(int i)
{
   if(i == 0)
   {
      return 0;
   }
   if(i == 1)
   {
      return 1;
   }
   return fibonaci(i-1) + fibonaci(i-2);
}
 
int  main()
{
    int i;
    for (i = 0; i < 10; i++)
    {
       printf("%d\t\n", fibonaci(i));
    }
    return 0;
}


总结

递归就是相当于自己调用自己已达到目标要求,使代码结构更简洁明了。

你可能感兴趣的:(c语言,算法)