1、函数递归调用
函数递归调用简单来说就是“我自己调用我自己”,其实现思路就是把一个大型的复杂的问题分成小的相似的问题进行解决,调用可以分为直接调用和间接调用,直接调用就是在此函数中调用本身,间接调用就是通过另外一个函数调用此函数。
2、斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……在数学上,这一数列以如下递推的方法定义:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。斐波那契数列简单来说就是一个斐波那契数列等于前两个斐波那契数列之和,第一个为1,第二个为1,第三个为前两者之和2,第四个为前两者之和为3,也就是上面用数学公式表示出来的:F(n)=F(n-1)+F(n-2)。
#include<stdio.h>
int fun1(int n)//斐波那契实现函数
{
if (n <= 2)
return 1;//斐波那契数列前两个为1 1,第三个为3,小于两个直接返回1;
else
{
return fun1(n - 1) + fun1(n - 2);
}
}
int main()
{
int n = 0, ret = 0;
printf("请输入要求的第n个斐波那契数\n");
scanf_s("%d", &n);
ret = fun1(n);
printf("第%d个斐波那契数是%d\n",n, ret);
return 0;
}
代码实现思路是当n<=2时直接返回1,否则进入函数递归调用,比如,当n=4时,经过if选择进入fun1(n-1)和fun1(n-2),此时n分别变成3和2,n为2值时返回值为1,n为3值时再调用一次fun1(n-1)和fun(n-2),此时n值为2和1,分别返回1、1,三值相加为3,也就是第四个斐波那契数为3。
注意:使用递归调用实现斐波那契函数时递归计算量较大,因为计算第n个需要将前n-1个全部算出来,此时可以考虑函数迭代调用,实测n=45左右时就会发生溢出。