当前位置:   article > 正文

c++实现斐波那契数列_斐波那契数列c++

斐波那契数列c++

1. 斐波那契数列介绍

斐波那契数列(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*)在现代物理、准晶体结构、化学等领域,斐波那契数列都有直接的应用。

(文段引用来自百度百科,点击下方网站可了解更多)
https://baike.baidu.com/item/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97/99145

2.c++实现斐波那契数列

题目:求出斐波那契数列中的第a个数对1000取模的值
输入:包括一个正整数a
输出:一个正整数
数字规模:1≤a≤1000000

1.替换法
思路:设定三个变量a,b,c,c1,a=1(斐波那契数列第一个数),b=1(斐波那契数列第二个数),a+b赋值给c,c赋值给c1,代表c;a再赋值给b,b再等于c
代码:

#include<iostream>
using namespace std;
int n,g;
int js(int x)
{
	if(x==1 || x==2)
		return 1;
	int i,a=1,b=1,c=2,c1;
	for(i=3;i<=g;i++)
	{
		
		c=a+b;
		c1=c;
		a=b;
		b=c1;
	}
	return c;
}
int main()
{
	
	scanf("%d",&n); 
	while(n--)	
	{
		scanf("%d",&g);
		printf("%d\n",js(g)%1000);
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

PS:最简单的方法,注意代码的排列就可以
2.递推算法
通过递推公式js(x)=js(x-1)+js(x-2)直接得出
代码:

#include<iostream>
using namespace std;
int n;
int js(int x)
{
	if(x==1 || x==2)
		return 1;
	return js(x-1)+js(x-2);
}
int main()
{
	scanf("%d",&n); 
	printf("%d",js(n)%1000);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

代码简略,但时间复杂度与空间复杂度较高
3.动态规划
做法与递归算法大致相同
代码:

#include<iostream>
using namespace std;
int b[1000001];
int n,a;
int js(int x)
{
	int i;
	b[1]=1;
	b[2]=1;
	for(i=3;i<=n;i++)
		b[i]=b[i-1]+b[i-2];
	return b[x];
}
int main()
{
	scanf("%d",&n);
	printf("%d\n",js(n)%1000);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

3.总结

斐波那契数列是c++一个较为简单的数列,只要掌握数列规律,即可用多种做法求出。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/434124
推荐阅读
相关标签
  

闽ICP备14008679号