递归函数就是做了一件事:求和
成都创新互联公司网站建设公司一直秉承“诚信做人,踏实做事”的原则,不欺瞒客户,是我们最起码的底线! 以服务为基础,以质量求生存,以技术求发展,成交一个客户多一个朋友!专注中小微企业官网定制,网站建设、网站设计,塑造企业网络形象打造互联网企业效应。
递归过程如下:
第一次进入:n==3, 执行的是 p[0]+f(p[1],2);这样的话会继续调用函数f,也就有了第二次进入。
第二次进入:表达式变成了p[0]+p[1]+f[p[1],1],这样的话会继续调用函数f,也就有了第三次进入。
第三次进入:n==1, p[0]+p[1]+p[2].
return (p[0]+f(p[1],2)=p[0]+p[1]+f[p[1],1]=p[0]+p[1]+p[2])--return p[0]+p[1]+p[2]
递归一般是出于效率的要求,当然你这个没什么影响。递归也不是用在这里的。看递归要干什么很简单,看两点:1.递归退出条件是什么,退出时的返回值;2.递归时在做什么。
#includestdio.h
int Fib(int n){
return n=0 ? 0 : n == 1 ? 1 : Fib(n-1) + Fib(n-2);
}
int main(){
int n;
printf("请输入n:");
scanf("%d", n);
printf("%d", Fib(n));
return 0;
}
#include stdio.h
void main()
{
int n=5,answer;
int fac(int );/*函数的声明*/
answer=fac(n);
printf("5!=%d",answer);/*基本的主函数,包括printf函数,定义变量*/
getch();
}
int fac(int n)/*定义FAC函数*/
{
int k;
if(n==1||n==0) k=1;/*递归的终止条件*/
else k=n*fac(n-1);/*递归的精髓*/
return k;
}
我现在也在学习C语言,希望对你有帮助。
c语言利用递归方法求5!的函数:
int fact(int n)
{return n?n*fact(n-1):1;
}
调用语句:
printf("%d!=%d\n",n,fact(n));
当n为5时的输出为:
5!=120