C语言函数的递归调用
来源:互联网 发布:tk域名怎么解析 编辑:程序博客网 时间:2024/05/14 20:41
C语言函数的递归调用
一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。C语言允许函数的递归调用。在递归调用中,主调函数又是被调函数。执行递归函数将反复调用其自身,每调用一次就进入新的一层。例如有函数f如下:
- int f(int x){
- int y;
- z=f(y);
- return z;
- }
【例8-5】用递归法计算n!
用递归法计算n!可用下述公式表示:
n!=1 (n=0,1)
n×(n-1)! (n>1)
按公式可编程如下:
- long ff(int n){
- long f;
- if(n<0) printf("n<0,input error");
- else if(n==0||n==1) f=1;
- else f=ff(n-1)*n;
- return(f);
- }
- main(){
- int n;
- long y;
- printf("\ninput a inteager number:\n");
- scanf("%d",&n);
- y=ff(n);
- printf("%d!=%ld",n,y);
- }
下面我们再举例说明该过程。设执行本程序时输入为5,即求5!。在主函数中的调用语句即为y=ff(5),进入ff函数后,由于n=5,不等于0或1,故应执行f=ff(n-1)*n,即f=ff(5-1)*5。该语句对ff作递归调用即ff(4)。
进行四次递归调用后,ff函数形参取得的值变为1,故不再继续递归调用而开始逐层返回主调函数。ff(1)的函数返回值为1,ff(2)的返回值为1*2=2,ff(3)的返回值为2*3=6,ff(4)的返回值为6*4=24,最后返回值ff(5)为24*5=120。
【例8-5】也可以不用递归的方法来完成。如可以用递推法,即从1开始乘以2,再乘以3…直到n。递推法比递归法更容易理解和实现。但是有些问题则只能用递归算法才能实现。
0 0
- C语言实现:函数的递归调用
- C语言函数的递归和调用
- C语言函数的递归调用
- C语言函数的递归调用
- C语言下的函数递归调用
- C语言函数的递归调用
- C语言的函数,还有递归调用
- C语言函数的递归调用
- c语言:函数的递归调用
- 78 C语言函数的递归调用
- C语言函数的递归调用
- c语言:函数的递归调用
- c语言初学---函数的嵌套调用 递归调用
- C语言-函数实现模块化设计-函数的递归调用
- C语言函数的递归和调用实例分析
- C语言简单函数递归调用问题
- 直白C语言函数递归调用
- 【C语言】reverse_str递归调用函数
- phpcms标签整理
- 跨平台框架Cordova概述
- Java快速排序的实现和时间空间复杂度分析
- android_开发_EditText_and_TextView属性
- 杭电1559
- C语言函数的递归调用
- 常见标点符号的英文表述
- 对数线性模型之一(逻辑回归), 广义线性模型学习总结
- Activity切换效果(overridePendingTransition)
- 黑马程序员_泛型
- java float double
- linux网络编程之sockaddr、sockaddr_in和sockaddr_un
- ASP.NET MVC3 加 Unity2.1.505.0 依敕注入 Web.config 配置 简例Hello Unity2.1
- 非常实用的保健秘方