C语言----斐波那契数列

      各位看官们好,当我写了上一篇博客杨辉三角后,有一些看官叫我讲一下斐波那契数列。对于这个大家应该是有了解的。最简单的规律就是f(n)=f(n-2)+f(n-1)。就是当前是前两项之和,然后下标1和0都是1.从第三项开始计算的。那么我们知道规律,那么我们就直接来讲讲如何实现和实现方法有哪些吧。

递归

        我想大家学习C语言到现在应该看到斐波那契数列应该想到的是递归吧。我想递归大家应该还知道它的核心思想吧,就是每递归一次,那么这个问题就要越靠近我们想要的答案一次,一直递归到想要答案就返回。好,那么我们现在想一想怎么搞。那么我们知道我们有特殊情况就是,如果我输入1和2的话,那么我们得到的值是1.那么我们这个就可以直接写出来哇。好当我们写出了特殊情况后,我们来思考正常情况。那么我们也知道我们规律就是前两项之和。那么我们就直接写啊,是不是。大家思考一下:

        我们只要不是特殊情况的话,我们只需要在递归的时候将前两项传来,直到设定的值,那么我们就可以得到结果了。大家思考一次,是吧。代码很简单,但是有一个问题就是。递归的内存占用太多了。很有可能造成栈溢出。也许大家输入前面的数字编译器还是很快的输出的。但是当我们输入较大值如100这类的我们就可以明显的感觉速度很慢了。所以递归大家可以知道这个方法但是使用起来限制还是很大了。大家知道有这个办法就可以了。

for循环

      okok,当我们写了递归后,我们递归其实还是有点难度的,毕竟我们还是需要思考一下,怎么实现的吧。但是我们要是用for循环的,我们从最开始学习C语言的时候我们就知道有个for循环。那么最基础的知识其实是很有作用的,那么我们来思考一下for循环如何来实现我们的斐波那契数吧。但其实for循环也是比较简单的,毕竟大家思考一下。我们最基本的规律就是前两项之和f3,那么我们就创建三个变量吧。一个作为最后的相加项我们最后返回的。然后另外两个就一个作为前一项f1一个作为前两项f2。那么这个如何交换值值嘞。首先我们就最开始的时候考虑特殊情况。1和2的时候那么我们就直接从2开始吧,如果我输入的值是1或者2的话,for本来就等于2了,不执行,然后直接返回f3。那么我们可以确定了f3的初始值为1吧。并且我们现在把特殊情况也处理了。那我们正常的话f3=f1+f2。然后f2=f3。这个是为什么嘞,因为我们大家算f3,是不是就是我们的前一个f3加一个f2但我不能直接写f3的前一项啊。所以f2就成为上一个f3吧。那f2成为上一个f3那。f1自然而然的变成了上一个的f2了吧。这样大家是不是就通透了呀。我们将f1,2,3全部设为1.然后for循环从2开始那么就排除了特殊情况。然后最开始就将f3更新,然后f2和f1相继跟新这样如果下次没有更新的话,我们就可以直接确定了返回值f3了。

        大家需要注意一下啊。就是f1与f2更新的顺序不要乱哦。不然的话f1也变成上一个f3了。然后就太多的麻烦了。

数组

        OK呀,其实讲了上面的两个方法就差不多了的,但是我还想到了一个方法,就是我们使用数组来实现这个。那大家先想一想数组如何实现这个了。但其实啊。也很简单与我们的for循环是差不多的。我们上一个for循环是需要实时更新的,但我们数组其实就是很简单的。我们创建一个较大的数组。然后没循环一次,那么就往数组里写入新的值,然后循环到设定值结束,那么就返回这个数组下标的的元素就可以了。那么简单的思路那我们就直接开始搞吧。

        大家看看上面咦。为什么我们创建数组的时候开始要给0,1,1的值啊。其实也很简单就是我们数组下标啊。我们原本计算的都是从1开始的,但是我们数组是下标如果不设置得话,那么下标0为1,设置的值就会大很多,当然是越向后值就比正确值大很多。大家可以下来尝试一下。

      好了,那么我们上面三种方法就差不多了,递归方法虽然有,但是可以处理小部分递归次数较小的,如果太大了。那么就是会很慢甚至报错。建议少用用for循环的方法也可以。好了。以上就是本篇博客的内容了。如果还有补充的话,希望大家可以评论区留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/10346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选购洗地机有哪些技巧?2024洗地机全面解析,618洗地机综合对比

洗地机作为人们生活中智能清洁工具的代表,它自带清/污水箱,不用手洗滚刷,既可以吸尘也可以自动识别并清洗地板上的干湿垃圾和顽固污渍,它以多功能一体化的设计改善了家务清洁的效率和体验。那么如何在众多洗地机品牌中&#xff0c…

C#实现简单音乐文件解析播放——Windows程序设计作业2

1. 作业内容 编写一个C#程序,要求实现常见音乐文件的播放功能,具体要求如下:     1). 播放MP3文件: 程序应能够读取MP3文件,并播放其中的音频。     2). 播放OGG文件: 应能够播放ogg文件。     …

阿里云Redis创建使用

说明:本文介绍如何使用阿里云Redis,包括开通、连接、使用; 开通 进入官网Redis产品页,点击免费试用(白嫖); 选择中间这个,云数据库Redis版; 开通完成后,可在…

零代码平台助力中国石化江苏油田实现高效评价体系

概述: 中国石化集团江苏石油勘探局有限公司面临着评价体系依赖人工处理数据、计算繁琐且容易出错的挑战。为解决这一问题,他们决定借助零代码平台明道云开发江苏油田高质量发展经济指标评价系统。该系统旨在实现原始数据批量导入与在线管理、权重及评分…

FFmpeg常用API与示例(四)——过滤器实战

1.filter 在多媒体处理中,filter 的意思是被编码到输出文件之前用来修改输入文件内容的一个软件工具。如:视频翻转,旋转,缩放等。 语法:[input_link_label1]… filter_nameparameters [output_link_label1]… 1、视…

C++中调用python函数(VS2017+WIN10+Anaconda虚拟环境)

1.利用VS创建C空项目 step1 文件——新建——项目 step2 Visual C—— Windows桌面——Windows桌面向导 step3 选择空项目 step4 源文件——新建项——添加 step5 Visual C——C文件(.cpp) 2.配置环境 Step1. 更换成Release与X64 Step2. 打开项目属性&…

文本提取新技能:学会按行数批量提取,轻松应对各种需求

在数字化时代,文本处理成为我们日常生活和工作中不可或缺的一部分。无论是从网页、文档还是数据库中提取信息,文本提取技能都显得尤为重要。而按行数批量提取文本内容,更是文本处理中的一项高效且实用的技能。本文将介绍办公提效工具如何按行…

在Spring Boot应用安装SSL证书

目录 前提条件 步骤一:下载SSL证书 步骤二:在Spring Boot安装SSL证书 步骤三:验证SSL证书是否安装成功 前提条件 已通过数字证书管理服务控制台签发证书SSL证书绑定的域名已完成DNS解析,即您的域名与主机IP地址相互映射已在W…

ASP.NET学生信息管理系统

摘 要 本文介绍了在ASP.net环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发一个管理信息系统的过程。通过分析某一学校学生管理的不足,创建了一套行之有效的计算机管理学生的方案。文章介绍了学生管理信息系统的系统分析部分&#xff0c…

微信投票源码系统至尊版 吸粉变现功能二合一

源码简介 微信投票系统在营销和社交互动中发挥着多方面的作用,它能够提升用户的参与度和品牌曝光度,还是一种有效的数据收集、营销推广和民主决策工具。 分享一款微信投票源码系统至尊版,集吸粉变现功能二合一,全网独家支持礼物…

已经安装tensorflow,仍报错No module named ‘tensorflow‘

在安装某些python虚拟环境的教程文章中,经常看到有评论区说安装了但是调用显示无模块,例如pytorch和tensorflow等等。 其实跟之前我写过的一篇文章解决方法类似,就是python项目中需要应用哪个虚拟环境,这个项目的python解释器就选…

企业网络需求及适合的解决方案

近年来,企业网络通信需求可谓五花八门,变幻莫测。它不仅为企业的生产、办公、研发、销售提供全面赋能,同时也让企业业务规模变大成为了可能。 在当前的技术格局下,中大型企业常见的技术方案有很多,而同时也有各自不可替…

商务英语口语成人考级外语培训之BECkao考级口语篇

在口语考试中,不管实际内容你能说出多少,但准备一些套话,至少还能撑撑场子你们说是不是? 内容阐述 描述事实 1.Im going to describe/present/explain/give you some information about... 2.Id like to say a few words about...…

德国储能项目锂电池储能集装箱突发火灾:安全挑战再引关注

2024年4月27日,德国尼尔莫尔商业区的一起锂电池储能集装箱火灾事件引起了全球关注。这起事故不仅导致两名消防员在救援过程中受伤,更暴露了储能系统在安全领域亟待解决的重要问题。 根据德国消防队的出警记录,火灾发生在晚上9点前不久。消防人…

机器学习算法应用——神经网络回归任务、神经网络分类任务

神经网络回归任务(4-3) 神经网络回归任务,通常指的是使用神经网络模型进行回归分析。回归分析是一种统计学方法,用于研究一个或多个自变量(预测变量)与一个因变量(响应变量)之间的关…

涨薪技术 —— 搞定Appium工作中常见应用操作!

前言 Appium 是一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台。此工具在测试工作中也较长用到,接下来给大家介绍日常中的操作。 1、应用操作 1.1获取应用的包名和界面名 当我们从一…

日报表定时任务优化历程

报表需求背景 报表是一个很常见的需求,在项目中后期往往会需要加多种维度的一些统计信息,今天就来谈谈上线近10个月后的一次报表优化优化之路(从一天报表跑需要五分钟,优化至秒级) 需求:对代理商进行日统计…

基础I/O:文件系统调用接口

文章目录 文件系统调用接口open系统调用接口和C语言封装文件描述符fd重定向 文件系统调用接口 open NAME//打开、创建 - 打开并可能创建文件或设备open, creat - open and possibly create a file or deviceSYNOPSIS#include <sys/types.h>#include <sys/stat.h>…

【C++算法】队列相关经典算法题

1. N叉树的层序遍历 首先我们遇到这个题目&#xff0c;没有任何思路&#xff0c;我们就可以来模拟一下层序的流程&#xff0c;首先我们肯定是访问根节点1&#xff0c;访问之后呢就是访问下一层的最左节点3&#xff0c;此时第一层的节点1已经访问过了就可以不要了&#xff0c;然…

[GESP样题 四级] 填幻方和幸运数

B3940 [GESP样题 四级] 填幻方 题目 在一个NN 的正方形网格中&#xff0c;每个格子分别填上从 1 到 NN 的正整数&#xff0c;使得正方形中任一行、任一列及对角线的几个数之和都相等&#xff0c;则这种正方形图案就称为“幻方”&#xff08;输出样例中展示了一个33 的幻方&am…