提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……这个数列从第三项开始,每一项都等于前两项之和。
一、斐波那契数列(非递归法求和)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//1、1、2、3、5、8、13、21、34、……这个数列从第三项开始,每一项都等于前两项之和。
int Fib(int n)
{
//赋初始值
int num1 = 1;
int num2 = 1;
int sum = 1;
//n为要循环的此时(变量交换次数)
while (n)
{
if (n<=2)
{
return sum;
}
else
{
sum = num1 + num2;
num1 = num2;
num2 = sum;
n--;
}
}
return sum;
}
int main()
{
int n = 0;
scanf("%d",&n);
//非递归法
printf("%d", Fib(n)); ;
return 0;
}
图解:
二、斐波那契数列(递归法求和)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//1、1、2、3、5、8、13、21、34、……这个数列从第三项开始,每一项都等于前两项之和。
int Fib(int n)
{
int sum = 1;
if (n <= 2)
return sum;
else
return Fib(n - 1) + Fib(n - 2);
}
int main()
{
int n = 0;
scanf("%d",&n);
//递归法
printf("%d", Fib(n)); ;
return 0;
}
图解:
注:若要算的数据过大时,不要去用递归的方式,如:n=60是,Fib(60)=Fib(59)+Fib(58),然后Fib(59)=Fib(58)+Fib(57),等等需要大量时间去计算。
总结
本次分享了关于斐波那契数列的两种计算方法,注意若要计算的数据过大时,不推荐使用递归会导致算法效率大大降低。