明灯三千826 2021-12-08 13:42 采纳率: 100%
浏览 184
已结题

代码输出时间超限怎么解决?

问题:
小D这几天喜欢上了斐波那契数列!我们都知道,斐波那契数列的递归定义是:
(F1=1,F2=1,Fn=Fn-1+Fn-2(n≥3)),现在他想知道数列的第n项是奇数还是偶数,请你帮他算一算。
输入
输入数据包含多组测试数据,每个测试实例占一行,每行为一个数,表示斐波那契数列的第n项(1≤n<10^9)
输出
输出斐波那契数列的第n项是奇数还是偶数,奇数输出even,偶数输出odd,对于每个测试实例,输出一行。
代码:
#include <stdio.h>
int F(int n)
{
if(n==1||n==2)
return 1;
else
return F(n-1)+F(n-2);
}

int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(F(n)%2!=0)
printf("even\n");
else
printf("odd\n");
}
return 0;
}
这个代码时间超限,有什么解决办法吗?

  • 写回答

2条回答 默认 最新

  • qq_34024716 2021-12-08 13:49
    关注

    假设重复输入一个大数,那么每次都会对这个大数进行F(n)求解,即每一次你都是从0开始,所以你可以用数组arr暂存F(n)的解,如果arr[n] = 0,则求解arr[n]=arr[n-1]+arr[n-2],否则返回arr[n]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月16日
  • 已采纳回答 12月8日
  • 创建了问题 12月8日

悬赏问题

  • ¥50 用matlab和numeca做透平机械流体力学和热力学模拟 价格可议
  • ¥15 Unity3D WebView
  • ¥20 论文AlphaTensor复现(有偿)
  • ¥15 (有偿)在ANSYS中 .anf文件
  • ¥45 关于#芯片#的问题:组合逻辑电路设计
  • ¥15 基与机器学习和时间序列分析预测养老服务需求趋势
  • ¥100 求连续两帧图像在水平和垂直上偏移
  • ¥15 mysql全文索引查找指定必须关键词word无效
  • ¥15 Verilog hdl密码锁设计
  • ¥35 基于python的有ssl加密传输的socket聊天室