计算斐波那契数列
1.对于斐波那契数列的理解:
(1)常规
该数列由兔子繁衍的想法产生,故又“兔子数列”
其数值为:1、1、2、3、5、8、13、21、34
从数学定义上走:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。
(2)非常规
同斐波那契的定义一样,只是初始值发生变化,也被称为“奇怪的斐波那契数列”
2.对于求第N个斐波那契数列的元素的个人想法:
一:通过数学推导斐波那契的通项公式,从而由通项公式直接求值:
下列给出求解常规斐波那契数列的方法一
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
int n, sum, i;
int c = 0;
double num,num_1,num_2,num_3,n_2,n_3;
num = sqrt(5.0);
num_1 = 1.0 / sqrt(5.0);
num_2 = (1.0 + sqrt(5.0)) / 2.0;
num_3 = (1.0 - sqrt(5.0)) / 2.0;
scanf("%d", &n);
if (0 < n && n<= 1)
{
printf("1");
}
else if (n > 1)
{
for (i = 3;i>0;i++)
{
n_2 = pow(num_2, i);
n_3 = pow(num_3, i);
sum = num_1 * (n_2 - n_3);
if (sum >= n)
{
c = i;
break;
}
}
printf("%d",i);
}
return 0;
}

二:通过迭代法,求解第N个斐波那契数列的数字的值
下列给出求解奇怪的斐波那契数列的特定项值的方法二:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int a = 7;
int b = 11;
int n;
int c;
c = a + b;
scanf("%d", &n);
for (n; n >1; n--)
{
a = b;
b = c;
c = a + b;
}
printf("%d", a);
printf(" %s", (a % 3 == 0)? "yes": "no");
return 0;
}
此程序用来判断奇怪的斐波那契数列的第N个值是否为3的倍数,而其底层思想就是通过程序的循环迭代实现一轮一轮下来的求值。
3.思想总结
(1)斐波那契数列的特定数学规律,决定了它可以通过迭代法求值的底层逻辑,但同时也要关注到在这种迭代法的运行下,当n值达到30至40以上的时候容易出现爆值,导致程序运行错误。而同时使用循环进行迭代的运行时长较长,运行效率不高
(2)而由数学原理推导出斐波那契数列的通项公式,转化成程序,则是实现了定点求值,直接由表达式进行求值并对变量进行赋值处理,但同时也要关注到根号下数值对应的变量类型,防止隐式转换下造成的精度下降,数据溢出的情况,所以最好将通项公式中的常量分开求值,在通过变量赋值代入到总表达式中,实现斐波那契数列的通项公式,从而保证了求值的精确度。
相关文章:
计算斐波那契数列
1.对于斐波那契数列的理解: (1)常规 该数列由兔子繁衍的想法产生,故又“兔子数列” 其数值为:1、1、2、3、5、8、13、21、34 从数学定义上走:F(0)1,F(1)1, F(n)F(n - 1)F(n - 2)(n ≥ 2,n ∈…...
JAVA如何操作文件?(超级详细)
目录 一、认识文件和相关知识 1.认识文件 2.⽬录 3.⽂件路径(Path) 4.文本文件和二进制文件的区分 二、File类操作文件 1.构造方法 2.方法 2.1 方法表 2.2 get相关的方法和构造方法 2.2.1 “.” 和 “..” 2.3 is相关的方法 2.4 删除相关…...
(2)VTK C++开发示例 --- 绘制多面锥体
文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容👉内容导航 👈👉VTK开发 👈 1. 概述 VTK C开发示例程序; 使用C 和VTK绘制一个多面锥体。 环境说明系统ubuntu22.04、windows11cmake3.22、3.2…...
(2025-04-12)向老主机箱中安装新买的显卡及固态硬盘
目录 1 引言2 显卡及其驱动的安装3 固态硬盘的安装及C盘扩容3.1 固态硬盘正确连接到主板上后,操作系统上面仍然不显示对应盘符怎么办?3.2 如何对C盘扩容?3.3 新问题:原有D盘程序不能运行 4 总结 1 引言 今天安装昨天买的新固态硬…...
rk3588 驱动开发(一)字符设备开发
3.字符设备驱动开发 3.1 什么是字符设备驱动 字符设备:就是一个个字节,按照字节流进行读写操作的设备,读写是按照先后顺序的。 举例子:IIC 按键 LED SPI LCD 等 Linux 应用程序调用驱动程序流程: Linux中驱动加载成功…...
AbMole| 体内相互作用筛选揭示肝脏对癌症转移的限制
癌症转移,作为导致患者死亡的主要原因之一,其复杂机制一直是医学界研究的热点。肝脏,作为癌症转移的常见靶器官,其微环境对癌症细胞的生长和转移具有重要影响。然而,肝脏如何限制癌症转移的具体机制尚不完全清楚。 来…...
STM32移植文件系统FATFS——片外SPI FLASH
一、电路连接 主控芯片选型为:STM32F407ZGT6,SPI FLASH选型为:W25Q256JV。 采用了两片32MB的片外SPI FLASH,电路如图所示。 SPI FLASH与主控芯片的连接方式如表所示。 STM32F407GT6W25Q256JVPB3SPI1_SCKPB4SPI1_MISOPB5SPI1_MOSI…...
2025年第十六届蓝桥杯省赛JavaB组真题回顾
第16届蓝桥杯省赛已经结束了,第一次参加也是坐牢了4个小时,现在还是来总结一下吧(先声明以下的解法,大家可以当作一种思路来看,解法不一定是正解,只是给大家提供一种能够正常想到的思路吧) 试题…...
Android 接口定义语言 (AIDL)
目录 1. 本地进程调用(同一进程内)2. 远程进程调用(跨进程)3 `oneway` 关键字用于修改远程调用的行为Android 接口定义语言 (AIDL) 与其他 IDL 类似: 你可以利用它定义客户端与服务均认可的编程接口,以便二者使用进程间通信 (IPC) 进行相互通信。 在 Android 上,一个进…...
c# 数据结构 链表篇 有关双向链表的一切
本人能力有限,如有不足还请斧正 目录 0.双向链表的好处 1.双向链表的分类 2.不带头节点的标准双向链表 节点类:有头有尾 链表类:也可以有头有尾 也可以只有头 增 头插 尾插 删 查 改 遍历 全部代码 3.循环双向链表 节点类 链表类 增 头插 尾插 删 查 遍历…...
Debian服务器挂载外部存储设备的完整指南
在 Debian 系统中挂载外部存储设备(如 U 盘、移动硬盘、SSD)是服务器运维和桌面使用中非常常见的操作。本文将为你详细拆解从识别设备、格式化到手动/自动挂载的全过程,适合新手到进阶用户参考。 一、准备阶段:插入存储设备并识别 1. 插入外部设备后查看…...
660 中值定理
文章目录 前言168169170总结 前言 background music: 《代替》 张叶蕾 660 上面没有专门的中值定理章节,我蒙了。不过应该可以找一下。就是证明题,标志性应该还行。找一下。然后做一下。660 的题质量应该还是非常高的。但是积分中值定理,还有…...
Elasticsearch:AI 助理 - 从通才到专才
作者:来自 Elastic Thorben Jndling 在 AI 世界中,关于构建针对特定领域定制的大型语言模型(large language models - LLM)的话题备受关注 —— 不论是为了更好的安全性、上下文理解、专业能力,还是更高的准确率。这个…...
数据结构——布隆过滤器
目录 一、什么是布隆过滤器? 二、布隆过滤器的原理 三、布隆过滤器的特点 一、什么是布隆过滤器? 布隆过滤器是一种空间效率高、适合快速检索的数据结构,用于判断一个元素是否可能存在于一个集合中。它通过使用多个哈希函数和一个位数组来…...
时间的重构:科技如何重塑人类的时间感知与存在方式
时间是人类认知的基石,也是科技发展的终极命题。从石英钟到量子计时器,从日晷到区块链时间戳,技术不断重构着我们对时间的理解与利用。然而,当人工智能、量子计算和脑机接口等前沿技术开始挑战时间的线性本质时,我们不…...
悄悄话识别、 打电话识别、攀高识别三种识别算法
在摄像头正对场景下,悄悄话识别(唇语识别)、打电话识别和攀高识别是三种典型的行为检测技术。以下从技术原理、算法模型、应用场景及挑战等方面进行详细分析: 一、悄悄话识别(唇语识别) 技术原理 唇语识别通过分析嘴唇的几何特征(形状、开合程度、运动轨迹)和动态变化…...
docker多架构镜像构建
docker多架构镜像构建 Docker 多架构镜像构建(Multi-Architecture Image Build)允许你为不同平台(如 linux/amd64, linux/arm64, linux/arm/v7 等)构建和推送统一的镜像标签,解决在不同硬件架构之间部署的问题。 Doc…...
机器学习常用算法总结
1. 概述 机器学习的定义是对于某类任务T和性能度量P,如果一个计算机程序在T上其性能P随着经验E而自我完善,那么我们就称这个系统从经验E中学习,机器学习是人工智能的一种方法,它通过在大量数据中学习隐藏的规则,模式和…...
软件架构设计:MVC、MVP、MVVM、RIA 四大风格优劣剖析
MVC、MVP、MVVM 和 RIA 都是软件架构中常见的设计风格,以下是对它们的详细介绍: 一、MVC 架构风格(Model - View - Controller) 1.简介:MVC 架构风格将软件应用程序分为三个核心部分,通过这种划分来分离不…...
Android12 自定义系统服务
在Android中可以通过两种方式创建系统服务: 由SystemServer启动的系统服务,使用SystemServer线程资源,适合轻量级的服务,比如各种XMS服务;占用独立进程,在系统启动时,由init进程拉起,比如SurfaceFlinger;本文采用的是第一种方式。 自定义AssistantManagerService 参…...
Flink SQL SavePoint最佳实践
以下是 Flink SQL Savepoint 最佳实践,涵盖配置、触发、恢复及注意事项,高效管理作业状态: 一、Savepoint 的配置与触发 1. 基础配置 存储路径:在 flink-conf.yaml 中全局设置 Savepoint 存储目录,避免每次手动指定路…...
【STM32】在FreeRTOS下使用硬件SPI收发数据出现的时序耦合问题(WK2124芯片为例)
问题 STM32中在Freertos使用SPI通讯芯片 WK2124进行SPI转4串口时,接收数据为一个任务,发送数据为一个任务,切接受任务优先级更高实测发现收发一段时间(约几分钟)外扩芯片会死锁导致WK2124复位。 分析 首先ÿ…...
关于香橙派OrangePi 5 Ultra 这个开源板子,开发Android
我下载了它资料中的开源Android13 系统SDK, 这个SDK连个git 都没有,把这种代码释放能称为开源吗?? 并且也就是说你买了这个板子,里面是没有任何关于RK3588的开发文档,如果你没玩过其他RK平台,估…...
ubuntu启动 Google Chrome 时默认使用中文界面,设置一个永久的启动方式
方法 :通过桌面快捷方式设置 编辑 Chrome 的桌面快捷方式: 找到您的 Google Chrome 快捷方式文件。如果是通过菜单启动,通常会在以下路径找到与 Chrome 相关的 .desktop 文件: sudo vim /usr/share/applications/google-chrome.d…...
字节跳动开源 Godel-Rescheduler:适用于云原生系统的全局最优重调度框架
背景 在云原生调度中,一次调度往往无法解决所有问题,需要配合重调度来优化资源分配和任务摆放。传统的重调度框架主要集中在识别异常节点或任务,并通过迁移或删除来解决。然而,这些框架往往只能解决局部问题,无法提供…...
WINUI——Background小结
在 WinUI/UWP XAML 中,Background(或其他颜色属性)支持 多种颜色表示方式,包括以下三种主流格式: 1. RGB 十六进制(不透明) 格式:#RRGGBB特点…...
Oracle数据库数据编程SQL<01. 课外关注:数据库查重方法全面详解>
查重是数据库管理和数据分析中的常见需求,以下是各种查重方法的全面总结,涵盖不同场景和技术手段。 更多Oracle学习内容请查看:Oracle保姆级超详细系列教程_Tyler先森的博客-CSDN博客 目录 一、基础SQL查重方法 1. 使用GROUP BY和HAVING …...
开源技术如何助力中小企业实现财务管理自主化?
中小企业的数字化困境与开源机遇 国际数据公司(IDC)研究显示,全球67%的中小企业因高昂的软件成本和僵化的功能设计,未能有效推进数字化转型。传统商业软件常面临三大矛盾: 功能冗余与核心需求缺失:标准化系…...
边缘计算与隐私计算的融合:构建数据经济的“隐形护盾“
在数据成为核心生产要素的今天,边缘计算与隐私计算的交汇正在重塑技术生态。这并非简单的技术叠加,而是一场关于数据主权、算力分配与信任机制的深度博弈。本文将从"数据流动的拓扑学"视角,探讨二者融合如何重构数字社会的基础设施…...
【大模型实战篇】--阿里云百炼搭建MCP Agent
MCP协议(Model Communication Protocol,模型通信协议)是大语言模型(LLM)与外部系统或其他模型交互时的一种标准化通信框架,旨在提升交互效率、安全性和可扩展性。 目录 1.阿里云百炼--MCP 1.1.MCP 服务接…...
