当前位置: 首页 > news >正文

C语言实例之9斐波那契数列实现

1. 斐波那契数列简介

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多・斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为 “兔子数列”。
它的特点是从第三项开始,每一项都等于前两项之和,数列的前两项通常定义为 0 和 1(也有从 1 和 1 开始的定义方式,这里以 0 和 1 为例),即:
在这里插入图片描述

该数列的前几项依次为:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144……
斐波那契数列在自然界、计算机科学、数学等诸多领域都有广泛的应用,比如某生长模式、某算法优化等。
以下是不同方式输出斐波那契数列前20项的值

2. 实例代码之递归实现

需要注意的是,递归实现方式在计算较大项数时效率会很低,因为存在大量重复计算。

#include <iostream>// 递归函数计算斐波那契数列
int fibonacciRecursive(int n) {if (n == 0) {return 0;} else if (n == 1) {return 1;} else {return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2);}
}int main() {std::cout << "斐波那契数列(递归实现)前20项的值为:" << std::endl;for (int i = 0; i < 20; ++i) {int result = fibonacciRecursive(i);std::cout << result << " ";}std::cout << std::endl;return 0;
}

3. 实例代码之for循环实现

该实现方式相对递归实现效率更高,尤其在计算较大项数时优势明显。

#include <iostream>// 迭代函数计算斐波那契数列
int fibonacciIterative(int n) {if (n == 0) {return 0;} else if (n == 1) {return 1;}int a = 0, b = 1, c;for (int i = 2; i <= n; ++i) {c = a + b;a = b;b = c;}return b;
}int main() {std::cout << "斐波那契数列(迭代实现)前20项的值为:" << std::endl;for (int i = 0; i < 20; ++i) {int result = fibonacciIterative(i);std::cout << result << " ";}std::cout << std::endl;return 0;
}

4. 实例代码之数组实现

这种实现方式在需要多次访问数列不同项时可能会更方便,因为已经计算过的项都存储在数组中了。

#include <iostream>// 使用数组计算斐波那契数列
int fibonacciArray(int n) {if (n == 0) {return 0;} else if (n == 1) {return 1;}int fibArray[n + 1];fibArray[0] = 0;fibArray[1] = 1;for (int i = 2; i <= n; ++i) {fibArray[i] = fibArray[i - 1] + fibArray[i - 2];}return fibArray[n];
}int main() {std::cout << "斐波那契数列(数组存储实现)前20项的值为:" << std::endl;for (int i = 0; i < 20; ++i) {int result = fibonacciArray(i);std::cout << result << " ";}std::cout << std::endl;return 0;
}

5. 输出

在这里插入图片描述

http://www.lryc.cn/news/492152.html

相关文章:

  • YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
  • 数据结构--Map和Set
  • 计算机操作系统——进程控制(Linux)
  • 【前端】ES6基础
  • 【排序算法 python实现】
  • Java图书管理系统(简易保姆级)
  • 嵌入式硬件设计:从概念到实现的全流程
  • 第 4 章 Java 并发包中原子操作类原理剖析
  • 从 0 到 1 掌握部署第一个 Web 应用到 Kubernetes 中
  • 政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例
  • CentOS 7 安装部署 KVM
  • ArcGIS 10.2软件安装包下载及安装教程!
  • 一个专为云原生环境设计的高性能分布式文件系统
  • 基于深度学习CNN算法的花卉分类识别系统01--带数据集-pyqt5UI界面-全套源码
  • 3174、清除数字
  • C++ 优先算法 —— 无重复字符的最长子串(滑动窗口)
  • ADS学习笔记 6. 射频发射机设计
  • 上海乐鑫科技一级代理商飞睿科技,ESP32-C61高性价比WiFi6芯片高性能、大容量
  • QT QRadioButton控件 全面详解
  • 51单片机从入门到精通:理论与实践指南(一)
  • 零基础3分钟快速掌握 ——Linux【终端操作】及【常用指令】Ubuntu
  • C#中面试的常见问题007
  • 人工智能——大语言模型
  • nodejs第三方库sharp对图片的操作生成新图片、压缩、添加文字水印及图片水印等
  • 力扣第 67 题 “二进制求和”
  • Spring Boot优雅读取配置信息 @EnableConfigurationProperties
  • 鸿蒙多线程开发——Sendable对象的序列化与冻结操作
  • nodepad配置c/c++ cmd快速打开创建项目文件
  • 【C++】读取数量不定的输入数据
  • ESC字符背后的故事(27 <> 033 | x1B ?)