猿问

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

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

小嘿哟
浏览 2356回答 6
6回答

luofuxiang

    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

望远

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

星xing

比如斐波那契函数int Factorial(int n){if(n==0||n==1)return 1;elsereturn 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.

五只呆河马

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

拖鞋_

2个要素:1、自己调用自己    2、有跳出条件

化龙贝

自己调用自己 哪里不清楚?
随时随地看视频慕课网APP
我要回答