斐波那契查找出现的问题及解决方法
先看看斐波那契查找方法斐波那契数列 1 1 2 3 5 8 13 21 …斐波那契数列 的前一项f[k-1]/f[k] 随着k越来越大这个值逐渐趋近黄金分割点0.618如果查找的数据长度等于斐波那契数列的某一项数。则可以直接进行查找否则 就需要将查找目标数组进行扩列扩列数用目标数组高位填充假设目标数组 1,2,3,4,5,6 数据长度为6 那么就需要进行扩列到8 即 1,2,3,4,5,6,7,8由于f[k] f[k-1]f[k-2] 8 3 5 则查找就分为前5后3以此类推***import java.lang.reflect.Array; import java.util.Arrays; /** * 斐波那契查找 */ public class FibnqSearch { /** * 采用非递归的方式 * param arr * param key 查找的值 * return */ public static int serach(int[] arr,int key){ int low 0; int high arr.length - 1; int k 0; //斐波那契分割数值的下标 int mid 0; //存放mid值 int[] fibarr new int[20]; fibarr[0] 1; fibarr[1] 1; for (int i 2; i fibarr.length; i) { fibarr[i] fibarr[i-1] fibarr[i-2]; } //获取到斐波那契分割数值的下标 while (high fibarr[k] - 1){ k; } //不足的部分用0补齐 int[] temp Arrays.copyOf(arr,fibarr[k]); //将temp的高位以后的数据全部填充arr高位的数据 for (int i high1; i temp.length ; i) { temp[i] arr[high]; } //找到key值 while (low high){ mid low fibarr[k-1] - 1; //向左查找 if (key temp[mid]){ high mid - 1; k--; }else if (key temp[mid]){ //向右查找 low mid 1; k - 2; }else { if (mid high){ return mid; }else { //如果数组填充了就返回没填充之前的最高位 return high; } } } return -1; } }下面描述下出现的问题当查找的数据长度为5的时候查找最后一个数会出现斐波那契下标越界。查找目标数据 1,2,3,4,5 查找 5在计算mid low fibarr[k-1] - 1;会出现异常修改后的代码如下if (k 0){ mid low fibarr[k-1] - 1; }else { mid low; }这样一来就避免了异常问题很奇怪唯独在数据长度为5查找最后一个数据时就会出错。

相关新闻

关于内部类的使用

关于内部类的使用

内部类的概述: 把类定义在其他类的内部,这个类就叫做内部类 例如:在类A中定义类B,那么类B就叫做内部类 内部类的访问特点: 内部类可以直接访问外部类的成员,包括私有 外部类要访问内部类的成员,…

2026/9/17 2:06:33 阅读更多 →
java基础知识清单(一)

java基础知识清单(一)

JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环…

2026/9/18 8:00:34 阅读更多 →
终极Twitch掉落挖矿指南:告别手动观看,智能自动化获取游戏奖励

终极Twitch掉落挖矿指南:告别手动观看,智能自动化获取游戏奖励

终极Twitch掉落挖矿指南:告别手动观看,智能自动化获取游戏奖励 【免费下载链接】TwitchDropsMiner An app that allows you to AFK mine timed Twitch drops, with automatic drop claiming and channel switching. 项目地址: https://gitcode.com/Git…

2026/9/12 9:45:46 阅读更多 →

最新新闻

VBScript 导 CSV 首列带问号?让 Codex 借道 TaoToken 查 BOM 行不行

VBScript 导 CSV 首列带问号?让 Codex 借道 TaoToken 查 BOM 行不行

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 0:12:41 阅读更多 →
Dev C++配置指南:解决自动补全、中文乱码与断点调试

Dev C++配置指南:解决自动补全、中文乱码与断点调试

如果你正在学C语言,或者因为课程、比赛要求准备装一个“能编译运行C/C的IDE”,十有八九会撞上Dev C。这工具界面确实老,但胜在体量小、启动快、装完基本就能用,很多高校和竞赛入门还拿它当标准环境。可我也见过太多人装上之后直接…

2026/9/19 0:12:41 阅读更多 →
GBase 8s手动安装与实例配置实战指南

GBase 8s手动安装与实例配置实战指南

1. 项目概述:为什么在2024年还要亲手装GBase 8s?GBase 8s不是那种点几下“下一步”就能跑起来的桌面软件。它是一套扎根于金融、电信、能源等关键行业的国产关系型数据库系统,底层继承自Informix经典架构,又深度适配了国内信创生态…

2026/9/19 0:12:41 阅读更多 →
SCI 投稿 Status 看不懂?让 Codex 走 TaoToken 对照流程清单

SCI 投稿 Status 看不懂?让 Codex 走 TaoToken 对照流程清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 0:12:41 阅读更多 →
Altium Designer PCB 3D动画制作:模型对齐、关键帧与输出

Altium Designer PCB 3D动画制作:模型对齐、关键帧与输出

上个月帮一个做工业控制的朋友看板子,他们新设计的采集模块要装进一个铝合金外壳,内部净空只有 12mm,而板子上最高的电解电容标称高度就是 11.5mm,加上焊点余量,结构那边一直不放心。搁以前这种确认得来回发文件、重新…

2026/9/19 0:12:41 阅读更多 →
PyCharm远程连接Windows服务器:SFTP部署与SSH避坑指南

PyCharm远程连接Windows服务器:SFTP部署与SSH避坑指南

pycharm 远程连接 Windows 服务器这件事,我前后在四五台机器上折腾过,从最早的 Windows Server 2012 R2 到现在的 Server 2022、Win11 专业版,踩过的坑基本能凑成一本小册子。很多人第一次做这个配置时会默认"PyCharm 的远程功能是通用的…

2026/9/19 0:11:41 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/16 19:03:19 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/17 7:57:36 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/17 10:19:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →