蓝桥杯练习题 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
比较不错的学习人工智能学习网站,各个知识点也讲的很不错:人工智能学习教程
题目:
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
样例输入
10
样例输出
55
样例输入
22
样例输出
7704
两种方式解决:
第一种递归,但是对于较大的数可能会超时
第二种使用迭代,对于时间复杂度为O(n)
第一种使用递归:
#include <iostream>
using namespace std;int fib(int n)
{if(n==1) //第一个出口return 1;else if(n==2) //第二个出口return 1;else return fib(n-1)%10007+fib(n-2)%10007; //因为递推公式为Fn=Fn-1+Fn-2,所以出口会有两个//但是会有大量的重复运算,导致大数据运算会超时
}int main()
{int n;cin>>n;cout<<fib(n);return 0;
}
注意:使用递归的话,内存空间不会占太大,但是时间复杂度会很大,很容易输入n过大而导致超时,复杂度为O(2^n)。
第二种使用迭代:
#include <iostream>
using namespace std;
int main()
{int n;cin>>n;long long a[n];a[0] = 1,a[1] = 1;//直接使用迭代这样的话时间复杂度为O(n),这样的话不会超时,但是如果n大的话,空间复杂度会更大,以空间换时间//数组存储的话下标 0 1 2 3 4 5 6 7 8 9//分别对应数为 1 1 2 3 5 8 13 21 34 55for(int i=2;i<n;i++){a[i] = (a[i-2]+a[i-1])%10007;}cout<<a[n-1]<<endl;return 0;
}
注意:这里是创建了数组并且不断保存之前的数据,而不像递归那样有着大量的重复运算,空间换取时间,时间复杂度为O(n)。
题目总结:
对于这道题,更好解决方法应当使用迭代,而不是用递归,递归用于解决较复杂问题会产生更好的效果
我是长路,感谢您的收看。
欢迎关注我的公众号:长路Java,其中会包含软件安装等其他一些资料,包含一些视频教程以及学习路径分享。
也可以加群:891507813 我们可以一起探讨学习
蓝桥杯练习题 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。相关推荐
- 蓝桥杯练习题 Fibonacci数列
下学期要跟着学校去参加蓝桥杯,所以在这里自己留念之用.(java) 1 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. import java.util.Scann ...
- 蓝桥杯练习题--Fibonacci数列
Fibonacci数列 方法一(也是我第一个想到的办法 但是花费时间太多了)递归 #include<iostream> using namespace std; int f(int x) ...
- 蓝桥杯基础训练——Fibonacci数列
问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...
- 蓝桥杯练习题之数列特征
基础练习 数列特征 时间限制:1.0s 内存限制:256.0MB 问题描述 给出n个数,找出这n个数的最大值,最小值,和. 输入格式 第一行为整数n,表示数的个数. 第二行有n个数,为给定的n ...
- 蓝桥杯练习题(数列排序)
解题思路: 对数列进行排序可以直接使用sort()方法,默认为升序排序. 答案: import java.util.*; public class Main { public static v ...
- 蓝桥杯练习题Java实现 入门训练 Fibonacci数列
蓝桥杯练习题Java实现 入门训练 Fibonacci数列 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,F ...
- 蓝桥杯练习题之 Fibonacci数列
入门训练 Fibonacci数列 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非 ...
- 蓝桥杯 Python 练习题 Fibonacci数列
资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除 ...
- Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。(python)
Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1.当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 刚开始做 def svd(n):if(n ...
- Java 练习题 Fibonacci数列
问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...
最新文章
- leetcode-455 分发饼干
- Android平台开源项目
- hssfcolor 不建议使用_POI导出Excel经典实现
- Android webservice的用法详细讲解
- 【转载】RHEL系统crontab计划任务管理
- python爬取全国社会组织查询网站
- sklearn 随机森林_初识随机森林及sklearn实现
- 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串 1
- SAP CRM one order三层内存模型
- 互斥量和信号量的区别
- IBM连续两年大数据市场占有率全球第一
- nutzwk运行后wk-web中生成ehcache.disk.store.dir有什么用,怎么去掉
- 泡沫股价、外卖小哥要失业了?测试员还要不要进美团?一文带你了解背后真相
- Jquery Sparklines ref
- HJ6302网关模块与富士PXR5系列温控器的通讯
- 将png格式图片批量转存为jpg格式
- 力扣刷题 DAY_78 贪心
- NginX and Riak
- c 语言形式参数,高级语言C的形式参数.doc
- c语言浮点数无效,深入C++浮点数无效值定义与判定的解决办法
热门文章
- Mac能连接手机热点却无法上网问题解决
- 修复计算机之后东西还在吗,硬盘分区表修复后文件还在吗
- 移远百科 | GNSS定位技术知多少
- Java进阶架构实战——Redis在京东到家的订单中的使用
- Tasker实现简易的Telegram新消息朗读
- 量化回测系统 股票回测系统 极简回测 策略开发
- ABP教程(四)- 开始一个简单的任务管理系统 - 实现UI端的增删改查
- 密码攻防系列文章27-web后台登录口令暴力破解及防御
- php网站后台密码忘记,phpweb忘记后台密码
- 2018计算机考研国家线预测,2018考研国家线预测及解读-考研帮(kaoyan.com)