搜索
简帛阁>技术文章>C 递归

C 递归

C 递归

递归指的是在函数的定义中使用函数自身的方法。

    举个例子:
    从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?'从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……'" 

语法格式如下:
void recursion()
{
   statements;
   ... ... ...
   recursion(); /* 函数调用自身 */
   ... ... ...
}
 
int main()
{
   recursion();
}

流程图:

C 语言支持递归,即一个函数可以调用其自身。但在使用递归时,程序员需要注意定义一个从函数退出的条件,否则会进入死循环。

递归函数在解决许多数学问题上起了至关重要的作用,比如计算一个数的阶乘、生成斐波那契数列,等等。
数的阶乘

下面的实例使用递归函数计算一个给定的数的阶乘:
实例
#include <stdio.h>
 
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;
}

当上面的代码被编译和执行时,它会产生下列结果:

15 的阶乘为 1307674368000.000000

斐波那契数列

下面的实例使用递归函数生成一个给定的数的斐波那契数列:
实例
#include <stdio.h>
 
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;
}

当上面的代码被编译和执行时,它会产生下列结果:

0    
1    
1    
2    
3    
5    
8    
13    
21    
34

 

C递归递归指的是在函数的定义中使用函数自身的方法。举个例子:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!
递归C++一、递归简介自己调用自己二、递归写法21写法介绍先写出问题的递推公式递归部分的边界条件就是递推公式中的边界条件递归部分的主体部分就是递推公式中的主体部分22实例(1)题目例如:求n!。(2)
1)1、1、2、3、5、8用递归算法求第30位数的值?首先我们能够发现从第3位数起后一位数等于前两位数值之和,即:x(x1)+(x2),x>2;这里须要不断的相加,第一时刻就会想到循环处理,我们
递归的方法求和求和1+2+3+…+nSum(n):1+2+3+…+n;Sum(n1):1+2+3+…+(n1);Sum(n)Sum(n1)+nincludeintSum(intn){if(n0||n
//用递归法求1~100的和include<stdioh>unsignedintmy_sum(unsignedintn){if(n<0)return0;if(n1)return1;e
////mainc//递归函数////Createdbyxiaomageon15/6/7//Copyright(c)2015年xiaomageAllrightsreserved//include<
个函数在它的函数体内调用它自身称为递归调用,这种函数称为递归函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层,当最内层的函数执行完毕后,再一层一层地由里到外退出。递归函数不是C语言的专利
C语言练习题八皇后逆波兰表达式红与黑二叉树放苹果八皇后会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8*8个方格),使它们谁也不能被吃掉!这就
这个我是拿来理解和背诵的,选自于胡凡的《算法笔记》。归并排序是一种nlogn的时间复杂度算法,不断地利用空间倒腾去完成,一般也用在排序算法上。递归版本将array数组当前区间[left,right]进
递归:大师LPeterDeutsch说过:ToIterateisHuman,toRecurse,Divine中文译为:人理解迭代,神理解递归。简单理解:递归:你打开面前这扇门,看到屋里面还有一扇门。你