猿问
求大神为我讲一下递归函数!!!!!!?
实在看不懂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
8
1
0
望远
递归函数的使用分为两个部分,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
0
1
星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.
1
0
0
五只呆河马
递归函数,简单来说,就类似于咱们高中学习的证明方法归纳法,用归纳法来说明一个函数,然后再引用这个函数,就这样简单,喵
0
0
0
拖鞋_
2个要素:1、自己调用自己 2、有跳出条件
0
0
0
化龙贝
自己调用自己 哪里不清楚?
0
0
0
随时随地看视频
慕课网APP
相关分类
C
typedef入门问题
1 回答
我要回答