斐波那契数列【C语言实现】

article/2025/10/20 19:06:41

1. 定义:

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、55、...... 这个数列从第3项开始,每一项都等于前两项之和。

2. 求第n个斐波那契数的方法:

(1)递归

#include<stdio.h>
int Fib(int n)
{if (n <= 2){return 1;}else{return Fib(n - 1) + Fib(n - 2);}
}
int main()
{int n = 0;printf("input n: ");scanf("%d", &n);printf("%d\n",Fib(n));return 0;
}

我们输入50,看一下第50个斐波那契数是什么

可以看见,光标一直在闪,说明程序是一直在执行的状态,但是没有输出结果,这是为什么呢?

 可见,重复计算的数有很多,是个不小的工程量,我们可以计算一下某个斐波那契数被重复计算的次数

统计一下计算第40个斐波那契数时第3个斐波那契数被重复计算的次数(代码如下):

//递归法
#include<stdio.h>
int count = 0;//全局变量int Fib(int n)
{//统计的是 第3个斐波那契数被重复计算的次数if (3 == n){count++;}if (n <= 2){return 1;}else{return Fib(n - 1) + Fib(n - 2);}
}
int main()
{int n = 0;printf("input n: ");scanf("%d", &n);printf("%d\n",Fib(n));printf("count= %d\n", count);return 0;
}

 由此可见,计算机的计算量非常大,时间复杂度和空间复杂度都极高,很容易造成栈溢出和超时。所以这里使用递归显然不是一个明智的选择。

(2)迭代

//迭代法
#include<stdio.h>
int Fib(int n)
{int a = 1;int b = 1;int c = 1;while (n>2){c = a + b;a = b;b = c;n--;}return c;
}
int main()
{int n = 0;printf("input n: ");scanf("%d", &n);printf("%d\n",Fib(n));return 0;
}

循环迭代方法的效率大大高于递归,只是相比于递归代码可读性稍微差一些。

3. 提示:

(1)许多问题是以递归的形式进行解释的,这只是因为它们比非递归的形式更为清晰。

(2)但是这些问题的迭代实现往往比递归实现效率更高,虽然代码的可读性稍微差一些。

(3)当一个问题相当复杂,难以用迭代实现时,此时递归实现的简洁性便可以补偿它所带来的运行时的开销。


http://chatgpt.dhexx.cn/article/waXD4rew.shtml

相关文章

【C语言】斐波那契数列

一.斐波那契数列是什么&#xff1f; 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;因数学家莱昂纳多斐波那契&#xff08;Leonardo Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为“兔子数列”&#xf…

用C 语言实现斐波那契数列

斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称“黄金分割”数列&#xff0c;比如这样一个数列&#xff1a;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8&#xff0c;13&#xff0c;21&#xff0c;34&#xff0c;55&#xf…

免费且好玩的API接口

其实很多小伙伴都在寻找一些免费的好用的API接口&#xff0c;下面就来介绍一些好用的并且稳定的API接口吧。 1.聚合数据 聚合数据网站提供的接口可以说是非常的多&#xff0c;并且很多都是免费使用&#xff0c;虽然有次数的限制&#xff0c;但是用来进行简单的测试或者日常使…

分享笔趣阁、宜搜等小说免费API接口

背景 因为有一些js基础&#xff0c;开始是想学python的爬虫的&#xff0c;后来觉得python爬虫没用。因为我是想用爬虫去爬一些api接口的。爬虫真的太low了……有点鸡肋&#xff08;勿喷&#xff09; 然后为了爬api接口&#xff0c;我就去学抓包&#xff0c;2天速成&#xff0…

几个免费API接口分享,调用完全不限次数...

点击上方蓝色“终端研发部”&#xff0c;选择“设为星标” 学最好的别人&#xff0c;做最好的我们作者 : ishxiao 来源&#xff1a;blog.csdn.net/ishxiao/article/details/53839061 各类无次数限制的免费API接口整理&#xff0c;主要是聚合数据上和API Store上的一些&#xff…

快速拥有自己的网易云免费API接口

操作简单&#xff0c;快速拥有自己的网易云api接口。 https://binaryify.github.io/NeteaseCloudMusicApi/#/?id%e6%ad%8c%e6%89%8b%e7%83%ad%e9%97%a850%e9%a6%96%e6%ad%8c%e6%9b%b2 此链接为网易云开发接口文档&#xff0c;拥有自己的api后就可以结合它进行令人兴奋的操作…

超百个免费api接口,分享给你

API&#xff08;应用程序编程接口&#xff09; API&#xff08;Application Programming Interface&#xff0c;应用程序接口&#xff09;是一些预先定义的函数&#xff0c;或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程…

50多个免费 API 接口分享

1 背景 此前时不时会有一些研发小伙伴和我诉苦&#xff0c;说很多企业由于人力财力限制或者需求不强&#xff0c;会直接购买使用第三方的开放API&#xff0c;这样一来&#xff1a; 一则由于开放项目不是量身定制的&#xff0c;寻找自己合适的接口也要搜索调研蛮多时间。二则这种…

超全开放 API 免费调用,这款 API 管理工具太香了!

01 此前时不时会有一些研发小伙伴和我诉苦&#xff0c;说很多企业由于人力财力限制或者需求不强&#xff0c;会直接购买使用第三方的开放API&#xff0c;这样一来&#xff0c; 一则由于开放项目不是量身定制的&#xff0c;寻找自己合适的接口也要搜索调研蛮多时间。 二则这种合…

免费实用的API接口

本文分为两个部分&#xff0c;第一部分是平台的接口汇总&#xff0c;第二部分是非常实用的单个的接口汇总。 第一部分 1、聚合数据&#xff08;API数据接口_开发者数据定制&#xff09; 2、百度API Store(API集市_APIStore) 3、webxml&#xff08;确实不错&#xff09;WebXml…

整理一些完全免费开放的API接口

前言 在开发测试阶段&#xff0c;或者是在写Demo的时候&#xff0c;难免会用到一些测试数据&#xff0c;有时苦于没有可用的接口&#xff0c;需要自己动手去写&#xff0c;但是这样大大降低了效率&#xff0c;前期我也找了一些开放的接口&#xff0c;这篇文章整理一下&#xff…

一些真正免费的API接口

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 文章目录 1. JSONPlaceholder2. Fake Store API3. Unsplash API4. Quotes API5. RandomUser6. Coingecko API 集成服务有助于提高开发人员的开发性能并节省大量时间…

java mfcc_MFCC特征提取过程详解

一、MFCC概述 在语音识别(Speech Recognition)和话者识别(Speaker Recognition)方面&#xff0c;最常用到的语音特征就是梅尔倒谱系数(Mel-scale Frequency Cepstral Coefficients&#xff0c;简称MFCC)。根据人耳听觉机理的研究发现&#xff0c;人耳对不同频率的声波有不同的听…

tensorflow 2 实现 mfcc 获取

原创: Lebhoryirt-thread.com时间: 2020/05/11结合 tf2 官网mfcc例程阅读本篇文档食用更佳rfft 部分没有吃透&#xff0c;未来待补Update: 新增tensorflow2 调用tf1的API 实现mfcc提取&#xff1b;Update: 新增全文代码下载链接Date: 2020/07/27 文章目录 0x00 前言概述0x01 读…

语音识别MFCC系列(四)——MFCC特征参数提取

最好先看下下面三篇&#xff08;其中系统的讲述了离散傅里叶变换&#xff0c;能量密度谱为什么是DFT系数的平方除以总点数&#xff0c;为什么512点的离散傅里叶变换只选前257个分量&#xff0c;离散余弦变换&#xff0c;为什么采样频率要大于真实信号最大频率的两倍&#xff0c…

MFCC 特征提取

HTK以及My_htk数据链接&#xff1a; https://pan.baidu.com/s/1Ajo7d-odrRiAwmCB_CQTzQ 提取码&#xff1a;hqnv 一&#xff1a;文件准备 HTK 和 HTK–samples 下载 HTK 和 HTK–samples 两个压缩文件&#xff0c;保存至 F 盘根目录下。 下载地址&#xff1a;http://htk.eng.…

MFCC概述

在进行端点处理之后&#xff0c;就可以得到需要处理的信号。但是要进行语音识别就必须进行一个处理&#xff1a;特征提取。进行特征提取我们这里采用的就是FMCC。 具体的流程是怎么样的呢&#xff1f; 那就是&#xff1a; 概述: MFCC&#xff1a;Mel频率倒谱系数的缩写。Mel频…

matlab实现MFCC

MFCC MFCC&#xff08;Mel-frequency cepstral coefficients&#xff09;&#xff1a;梅尔频率倒谱系数。 梅尔频率是基于人耳听觉特性提出来的&#xff0c; 它与Hz频率成非线性对应关系。 MFCC提取过程&#xff1a; 首先对语音进行预处理。 预处理又包括对语音进行预加重、分…

理解MFCC

文章目录 提取音频的整体步骤预加重分帧加窗FFT(快速傅里叶变换)声谱图&#xff08;Spectrogram&#xff09;梅尔频谱和梅尔倒谱 倒谱&#xff08;cepstrum&#xff09;就是一种信号的傅里叶变换经对数运算后再进行傅里叶反变换得到的谱记住一句话&#xff0c;在梅尔频谱上做倒…

MFCC详细步骤及解析

MFCC(Mel-frequency cepstral coefficients):梅尔频率倒谱系数。梅尔频率是基于人耳听觉特性提出来的&#xff0c; 它与Hz频率成非线性对应关系。梅尔频率倒谱系数(MFCC)则是利用它们之间的这种关系&#xff0c;计算得到的Hz频谱特征。主要有 以下几个步骤&#xff1a;预加重&a…