递归函数C语言
递归函数,是函数的一种,其最核心的一句话概括起来就是我引用我自己,
没错,翻来覆去就是在玩自己。
递归函数在本质上可以理解为是一种循环的实现,同样也可以有控制条件和循环语句,相比于循环的单独使用,递归函数的调用显得更加灵活、便捷。
在解决面临处理较频繁滴运行同种循环的时候,递归函数就大展神通了。
1.说到递归数列,不得不提到著名的斐波那契数列,1、1、2、3、5、8、13…
就是后面的项等于前两项的和。
话不多说,上代码。
#include <stdio.h>
int fei(int n)
{
int f;
if(n==1)//相当于控制循环的条件n==1
{
f=1;
}
else if(n==2)//n==2
{
f=1;
}
else
{
f=fei(n-1)+fei(n-2);//极其简单的引用但又极其适用
}
return f;//最后返回的f值为fei()函数的值
}
int main()
{
int n;
scanf("%d",&n);//输入要求的斐波那契数列的第几项
printf("%d",fei(n));输出fei()函数的值,也引用的fei()函数
return 0;
}
2.第二个经典题目我想到的就是求阶乘。直接上代码。
#include <stdio.h>
int jiecheng(int n);
int main()
{
int n;
scanf("%d",&n);
printf("%d",jiecheng(n));//调用阶乘函数并输出
return 0;
}
int jiecheng(int n)
{
int f,k;//f来返回结果 k用来辅助控制循环
{
if(n==1)//先用分支 为循环做铺垫 我们要控制的就是循环的终止条件
k=1;
else //也就是说 当n=1时,就不能再继续调用n-1了,因为接下来会向负数发展
k=jiecheng(n-1);//
}
f=k*n;
return f;//返回值
}