温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SpringBoot中Fibonacci数列的示例分析

发布时间:2022-01-19 10:08:52 来源:亿速云 阅读:118 作者:小新 栏目:大数据

这篇文章主要为大家展示了“SpringBoot中Fibonacci数列的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot中Fibonacci数列的示例分析”这篇文章吧。

SpringBoot中Fibonacci数列的示例分析
对于这个问题,拿到手,马上想到的是:先求Fibonacci数列,再求余数。但是极其不建议这样暴力计算。因为当n很大时,计算时间较长,还可能发生数值溢出的情况!
所以,这里给出另外一种思路:间接方式求余数
首先,科普一个求余公式:(a+b)% c = (a%c+b%c)%c
这个式子不难理解,可以代值进去试试看。
所以,不难得出:f(n)%m = [f(n-1)+f(n-2)]%m = [f(n-1)%m+f(n-2)%m]%m
由题目可知,最终求f(n)%m,因此令:g(n)=f(n)%m,其中m=10007。
于是求余递推公式为:g(n)=[g(n-1)+g(n-2)]%m
其中,m=10007,g(1)=g(2)=1%m=1
完整代码如下:

#include <iostream>using namespace std;int main(){
   
   
   int f1=1,f2=1;int temp=0; //中间变量int output=0; //输出long n=0; //初始化输入
	cin>>n;if(n==1||n==2){
   
   
   
		output=1;  //当n=1或2时,输出为1} 
	else{
   
   
   for(int i=3;i<=n;i++){
   
   
   
			temp=f2;
			f2=(f1+f2)%10007;  //当n大于2时,递推计算
			f1=temp;}
		output=f2;}
	cout<<output;}

既然说到了Fibonacci数列,那么这里也贴出C++的实现方法:

#include <iostream>using namespace std;int Fibonacci(int n)   //Fibonacci数列函数 {
   
   
   if(n==1||n==2)return 1;elsereturn Fibonacci(n-1)+Fibonacci(n-2);}int main(){
   
   
   int n=0;
	cin>>n;
	cout<<Fibonacci(n);  //输出Fibonacci数列第n个数 return 0;}

以上是“SpringBoot中Fibonacci数列的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI