为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
小嘿哟 2016-07-29 11:44:53
实在看不懂c语言中的递归函数,什么叫做调用函数自身
查看完整描述

6 回答

已采纳
?
luofuxiang

TA贡献34条经验 获得超34个赞

    1.递归函数是自身调用自身的函数;

    2.每一个递归函数都必须有递归出口,且一般带有参数;

    3.递归算法代码简洁,但复杂度高,对计算机资源的占用很大,能不用递归尽量不用递归。

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

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

    代码:

#include <stdio.h>

int f(int n)
{
    if( n==1 ) return 1;    //递归出口,当n=1时,返回1
    else return n * f(n-1); //调用函数f本身,传入n-1,将求n的阶乘转化为求n乘以n-1的阶乘
}

int main()
{
  int n = 6;
  int sum = f(n);
  printf("sum =  %d",sum);
}

    输出结果:

sum =  720


查看完整回答
8 反对 回复 2016-07-29
?
望远

TA贡献1017条经验 获得超1032个赞

递归函数的使用分为两个部分,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

查看完整回答
5 反对 回复 2016-07-29
?
星xing

TA贡献4条经验 获得超1个赞

比如斐波那契函数

int Factorial(int n)

{

if(n==0||n==1)

return 1;

else

return n * 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.


查看完整回答
1 反对 回复 2016-07-29
?
五只呆河马

TA贡献2条经验 获得超0个赞

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

查看完整回答
反对 回复 2016-07-31
?
拖鞋_

TA贡献453条经验 获得超223个赞

2个要素:1、自己调用自己

    2、有跳出条件

查看完整回答
反对 回复 2016-07-29
?
化龙贝

TA贡献191条经验 获得超79个赞

自己调用自己 哪里不清楚?

查看完整回答
反对 回复 2016-07-29
  • 6 回答
  • 3 关注
  • 2304 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信