求Fibonacci数列前20项:利用数组

简介: 求Fibonacci数列前20项:利用数组

引例:求Fibonacci数列前20项

1,1,2,3,5,8,13……

所谓递推就是指,在初始条件下,可以由前面一项或者多项推出后面的项。

在Fibonacci数列中,已知f1=1,f2=1,可得f3=f1+f2=3,f4=f2+f3=5,f5=f3+f4=8……依次类推,可以求得f19,f20。但是如果是这样一项一项求的话,程序过于繁杂。如果求前100项呢?

所以,对于递推问题,应该利用循环。要求某一项,已知前两项就可以。

程序设计


定义f1,f2,f且f1=1,f2=1;输出f1,f2.。

设计循环,循环体中,次数是一定的。即从i=3到i=20。循环体中f=f1+f2,输出f。再为下一次循环做准备。t=f2,f2=f,f1=f2,(需要定义中间变量t)

故需要定义f1,f2,f,i(计数器),t(中间变量)

代码实现

#include <stdio.h>
int main (void)
{
  int f1,f2,f,i,t;
  f1=1;f2=1;
  printf("%d\t%d\t",f1,f2);
  for (i=3;i<=20;i++)
  {
    f=f1+f2;
    printf("%d\t",f);
    if (i%5==0)
      printf("\n");
    t=f2;
    f2=f;
    f1=t;
  }
  return 0;
}

思考:若是要求只是输出Fibonacci数列的某一项呢?

在上面的代码中,只是对于每一项进行了输出,而其实际的数据并没有在内存中保存。

如果要求输出某一项,就要求我们把Fibonacci数列的每一项数据都存在内存中。这时,可以考虑数组。

利用数组:

将数列的第一项,赋值给a[0],第二项赋值给a[1],第三项赋值给a[3]

定义一维数组,a[20];方法分析如上。

代码实现

#include <stdio.h>
int main (void)
{
  int a[20],i;
  a[0]=1;a[1]=1;
  for (i=2;i<20;i++)
    a[i]=a[i-1]+a[i-2];
  for (i=0;i<20;i++)
  {
    printf("%d\t",a[i]);
    if ((i+1)%5==0)
      printf("\n");
  }
  printf("%d",a[10]);
  return 0;
}

这时,利用数组能将每一项都保存下来,若要输出某一项时,也可以直接输出。

相关文章
|
6月前
|
弹性计算 自然语言处理 运维
超强辅助,Bolt.diy 一步搞定创意建站
Bolt.diy 是 Bolt.new 的开源版本,提供灵活的全栈开发支持与二次开发能力。通过 CAP 平台部署到云端,结合 deepseek-v3 模型实现代码生成,简化开发流程。方案涵盖多模型适配、高度定制化、全栈开发覆盖及智能辅助工具,支持自然语言交互生成代码、实时调试与一键部署,有效降低资源成本并提升开发效率。实验展示了从项目部署到代码生成、下载和上线的完整流程。
119 1
|
8月前
|
机器学习/深度学习
《揭秘机器学习中的交叉验证:模型评估的基石》
交叉验证是机器学习中评估模型性能的关键技术,旨在提高模型的可靠性和泛化能力。通过将数据集划分为多个子集,交叉验证有效抵御过拟合风险,最大化数据利用效率,并精准筛选最优模型。常见的方法包括K折交叉验证、留一交叉验证、分层交叉验证和嵌套交叉验证,每种方法适用于不同场景,确保模型在实际应用中表现优异。
636 1
|
Java API Maven
告别漫长重启时代:Quarkus热部署功能让你的代码改动瞬间生效,提升开发效率的秘密武器揭秘!
Quarkus是一款备受开发者青睐的开源框架,以其轻量级、高性能及出色的云适应性著称。其内置的热部署功能让开发者能在不重启应用的情况下实时预览代码修改效果,显著提升开发效率。本文将深入解析Quarkus热部署的工作原理,并通过示例演示如何启用和使用该功能。首先确保已安装Java 11及以上版本和Maven,然后按照指引创建并运行一个Quarkus项目。通过修改RESTful API端点的返回值,我们可以直观地看到热部署带来的即时效果,从而体验到这一功能为开发流程带来的巨大便利。这对于追求高效开发的技术团队而言,无疑是强大的助力。
308 1
|
测试技术 程序员 C#
《黑神话:悟空》:从Unity到UE4 —— 游戏引擎迁移的挑战与机遇
【8月更文第26天】近年来,游戏行业的发展突飞猛进,特别是在图形表现力和技术实现上。《黑神话:悟空》是一款备受期待的动作角色扮演游戏,该游戏在早期开发阶段使用了Unity引擎,但为了追求更高的视觉质量和更强大的技术能力,开发团队决定将其迁移到Unreal Engine 4 (UE4)。本文将探讨这一迁移过程中的技术挑战与机遇。
760 1
|
Python
python国内原地址
【7月更文挑战第2天】 国内Python用户为加速包安装常使用镜像源,
4250 1
|
存储 Java 数据库连接
数据库三范式详解及应用
数据库三范式详解及应用
|
机器学习/深度学习 人工智能 自然语言处理
探索人工智能的未来:深度学习的突破与挑战
本文深入探讨了深度学习技术的最新进展和面临的挑战。通过分析当前的研究趋势、技术进步以及实际应用案例,本文揭示了深度学习如何在图像识别、自然语言处理等领域取得显著成果。同时,文章也指出了深度学习在数据依赖性、模型解释性和计算资源需求等方面遇到的主要挑战,并讨论了未来可能的解决方案。
|
安全 Unix Linux
操作系统(2)----操作系统的体系结构
操作系统(2)----操作系统的体系结构
343 0
|
编解码 算法 计算机视觉
HSV
HSV
530 4
|
负载均衡 前端开发 网络协议
Keepalived+HAProxy 搭建高可用负载均衡(二)
Keepalived+HAProxy 搭建高可用负载均衡
776 0