软件工程头歌一起维护代码第2关:数列计算的预防性维护

2023-11-07 12:10

本文主要是介绍软件工程头歌一起维护代码第2关:数列计算的预防性维护,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

任务描述

本关任务:斐波那契数列数列的计算是一个经典的递归问题,但是递归计算的节点个数是O(2n) 的级别的,存在大量重复计算。时间复杂度是O(2n),一秒内大约能算到第三四十项。
为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件,这被称为软件的预防性维护。
请你实现更加高效的方式,输入一个整数n,求斐波那契数列的第n项。
假定从0开始,第0项为0。为了防止结果溢出int范围,结果需要对1000000007取模。
输入样例:

 
  1. 5

输出样例

 
  1. 5

解释:输入5,表示求斐波那契数列数列的第五项,0,1,1,2,3,5...第5项为5,则输出5.

编程要求

根据提示,在右侧编辑器补充代码,计算并输出结果。

测试说明

平台会对你编写的代码进行测试。


开始你的任务吧,祝你成功!

答案

#include <bits/stdc++.h>

using namespace std;

const int MOD = 1000000007;



 

// 预防性维护后的代码

int F(int n) {

    //请在此处添加代码,输出斐波那契数列的第n项

    /********** Begin *********/

    if(n==1||n==2)return 1;

    else

    {

        int f1=1,f2=1,f3;

        for(int i=0;i<n-2;i++)

            {

                f3=(f1+f2)%MOD; 

                f1=f2;f2=f3;

            }

        return f3;

    }



 

    /********** End **********/

}



 

int main() {

    int n;

    cin >> n;

    cout << F(n) << endl;

    return 0;

 

 

 

 

这篇关于软件工程头歌一起维护代码第2关:数列计算的预防性维护的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/363487

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1