栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

计算斐波那契数-c语言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算斐波那契数-c语言

计算斐波那契数-c语言 斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
-摘自百度

我们可以观察斐波那契数列,可以发一个规律,从第三项开始,当前项都是前两项之和 1、1、2、3、5…
了解规律之后,我们就好写多了,先判断是否是前两项,是,则直接输出1,不是,则将前两项加起来。

参考代码
#include
//递归求第n个斐波那契数
int main()
{
	int n;
	scanf("%d", &n);
	int n1, n2,n3;
	n1 = 1;
	n2 = 1;
	n3 = 0;
	if (n ==1 || n == 2)\不能图麻烦,直接写成n<=2
	{
		printf("%d ", n1);
		return 0;
	}
	for (int i = 3; i <= n; i++)
	{
		n3 = n1 + n2;
		n1 = n2;
		n2 = n3;
		if (i == n)
		{
			printf("%d ", n3);
		}
	}
	
	return 0;
}
递归实现
int fib(int n)
{
	if (n ==1 || n == 2)
		return 1;
	
	return fib(n - 1) + fib(n - 2);
}

int main()
{
	int n;
	scanf("%d", &n);

	int ret = fib(n);
	printf("%d ", ret);

	return 0;
}

递归实现,我是想不出来,但是通过画流程图发现的确可以求出对应的斐波那契数。
可以这么理解吗,当n大于2时,说明他不是前两项,那么这项就可以通过前两项相加得到。一直递归到n等2或者等于1时,再相加。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号