函数递归调用之斐波那契数列

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)(≥ 2,∈ 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左右时就会发生溢出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值