• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

求大神为我讲一下递归函数!!!!!!?

实在看不懂c语言中的递归函数,什么叫做调用函数自身

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与4

1.递归函数是自身调用自身的函数;
2.每一个递归函数都必须有递归出口,且一般带有参数;
3.递归算法代码简洁,但复杂度高,对计算机资源的占用很大,能不用递归尽量不用递归。

下面给出一个利用递归算法求解的简单例子,程序调试运行过。

求解问题:求10以内任意正整数的阶乘。

  代码:

#includeintf(intn){if(n==1)return1;//递归出口,当n=1时,返回1elsereturnn*f(n-1);//调用函数f本身,传入n-1,将求n的阶乘转化为求n乘以n-1的阶乘}intmain(){intn=6;intsum=f(n);printf("sum=%d",sum);}  输出结果:

sum=720

使用道具 举报

递归函数的使用分为两个部分,1)递归;2)回溯;
int getAge(int i){
if(i==1)
return 10;
else
return (2+getAge(i-1));
}
如上例如果主函数调用getAge函数int age=getAge(5);那么执行的时候,第一次i==5 return(2+getAge(4))你会发现getAge(4)还是调用该函数,下一步得到getAge(4)的函数返回值,这样一直到i==1时getAge函数有一个具体的返回值,而这个得到结束条件函数返回值的过程称为“递归”,然后就是计算具体的最终函数返回值,这个过程称为“回溯”;
如上例:return(2+getAge(4))——>return (2+2+getAge(3))——>return(2+2+2+getAge(2))——>return (2+2+2+2+getAge(1))——>return (2+2+2+2+10)
最后函数返回18

使用道具 举报

比如斐波那契函数
intFactorial(intn)
{
if(n==0||n==1)
return1;
else
returnn*Factorial(n-1)
}
意思就是调用Factorial(n)这个函数,如果n==0或n==1,直接返回1,否则返回n*Factorial(n-1),此时n*不变,继续调用Factorial(n-1),一直这样下去知道n==0或1为止,就是n*(n-1)*(n-2)。。。*1.

使用道具 举报

递归函数,简单来说,就类似于咱们高中学习的证明方法归纳法,用归纳法来说明一个函数,然后再引用这个函数,就这样简单,喵

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!