比较不错的学习人工智能学习网站,各个知识点也讲的很不错:人工智能学习教程

题目
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的余数是多少。相关推荐

  1. 蓝桥杯练习题 Fibonacci数列

    下学期要跟着学校去参加蓝桥杯,所以在这里自己留念之用.(java) 1 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. import java.util.Scann ...

  2. 蓝桥杯练习题--Fibonacci数列

    Fibonacci数列 方法一(也是我第一个想到的办法 但是花费时间太多了)递归 #include<iostream> using namespace std; int f(int x) ...

  3. 蓝桥杯基础训练——Fibonacci数列

    问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...

  4. 蓝桥杯练习题之数列特征

    基础练习 数列特征   时间限制:1.0s   内存限制:256.0MB 问题描述 给出n个数,找出这n个数的最大值,最小值,和. 输入格式 第一行为整数n,表示数的个数. 第二行有n个数,为给定的n ...

  5. 蓝桥杯练习题(数列排序)

    解题思路: 对数列进行排序可以直接使用sort()方法,默认为升序排序. 答案: import java.util.*; public class Main {     public static v ...

  6. 蓝桥杯练习题Java实现 入门训练 Fibonacci数列

    蓝桥杯练习题Java实现 入门训练 Fibonacci数列 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,F ...

  7. 蓝桥杯练习题之 Fibonacci数列

    入门训练 Fibonacci数列 时间限制:1.0s   内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非 ...

  8. 蓝桥杯 Python 练习题 Fibonacci数列

    资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除 ...

  9. 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 ...

  10. Java 练习题 Fibonacci数列

    问题描述 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1. 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少. 输入格式 输入包含一个整数n ...

最新文章

  1. leetcode-455 分发饼干
  2. Android平台开源项目
  3. hssfcolor 不建议使用_POI导出Excel经典实现
  4. Android webservice的用法详细讲解
  5. 【转载】RHEL系统crontab计划任务管理
  6. python爬取全国社会组织查询网站
  7. sklearn 随机森林_初识随机森林及sklearn实现
  8. 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串 1
  9. SAP CRM one order三层内存模型
  10. 互斥量和信号量的区别
  11. IBM连续两年大数据市场占有率全球第一
  12. nutzwk运行后wk-web中生成ehcache.disk.store.dir有什么用,怎么去掉
  13. 泡沫股价、外卖小哥要失业了?测试员还要不要进美团?一文带你了解背后真相
  14. Jquery Sparklines ref
  15. HJ6302网关模块与富士PXR5系列温控器的通讯
  16. 将png格式图片批量转存为jpg格式
  17. 力扣刷题 DAY_78 贪心
  18. NginX and Riak
  19. c 语言形式参数,高级语言C的形式参数.doc
  20. c语言浮点数无效,深入C++浮点数无效值定义与判定的解决办法

热门文章

  1. Mac能连接手机热点却无法上网问题解决
  2. 修复计算机之后东西还在吗,硬盘分区表修复后文件还在吗
  3. 移远百科 | GNSS定位技术知多少
  4. Java进阶架构实战——Redis在京东到家的订单中的使用
  5. Tasker实现简易的Telegram新消息朗读
  6. 量化回测系统 股票回测系统 极简回测 策略开发
  7. ABP教程(四)- 开始一个简单的任务管理系统 - 实现UI端的增删改查
  8. 密码攻防系列文章27-web后台登录口令暴力破解及防御
  9. php网站后台密码忘记,phpweb忘记后台密码
  10. 2018计算机考研国家线预测,2018考研国家线预测及解读-考研帮(kaoyan.com)