斐波那契函数的问题。 C++

2023-12-09

应该返回n数组的位置。但我只得到 0 而不是值。

int fibonacci(int n)
{
    int f[100];
    f[0] = 0;
    f[1] = 1;

    for (int i=2; i<n; i++)
    {
        f[i] = f[i-2] + f[i-1];
    }

    return f[n];
}

int main()
{
    cout << fibonacci(3);
    return 0;
}

新代码:

新问题是它返回的数字比它应该返回的数字还要多。例如,如果“n==7”,则返回“13”,而不是应有的“8”。

int fibonacci(int n)
{
    int f[100] = { 0, 1 };

    for (int i=2; i<=n; i++)
    {
        f[i] = f[i-2] + f[i-1];
    }

    return f[n-1];
}

int main()
{
    cout << fibonacci(7);
    return 0;
}

好吧,你从来没有设置过f[n],你只需要达到i < n, 那是,i == n-1。 尝试返回f[n-1]

编辑:正如克里斯·卢茨指出的那样,我的答案不好,因为如果你打电话,它会给出无效的结果fibonacci(0)

就像许多人已经回答的那样,最好的解决方案是循环直到i <= n
当然,除非你想要fibonacci(3)返回斐波那契数列中的第三个元素而不是第四个元素,在这种情况下fibonacci(0)真的没有意义,正确的返回值是f[n-1]...仍然是n==0案件应该以某种方式处理,也应该n<0and the n>100 cases.

你可以返回f[n-1]只要你检查正确的边界:

int fibonacci(int n)
{
    int f[100] = { 0, 1 };

    if ((n <= 0) || (n > 100))
        return -1;//return some invalid number to tell the caller that he used bad input

    for (int i=2; i < n; i++) // you can use i < n here
    {
        f[i] = f[i-2] + f[i-1];
    }

    return f[n-1];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

斐波那契函数的问题。 C++ 的相关文章

  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到
  • 与 for_each 或 std::transform 一起使用时,如何调用 C++ 函子构造函数

    我以前从未使用过 C 函子 所以我只是想了解它们是如何工作的 例如假设我们有这个函子类 class MultiplyBy private int factor public MultiplyBy int x factor x int ope
  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • Libev,如何将参数传递给相关回调

    我陷入了 libev 中争论的境地 通常 libev 在类似的函数中接收包 接收回调 没关系 但是实际操作中 我们需要派遣一个亲戚 写回调 根据收到的包裹处理具体工作 例如 S RECV MSG pstRecvMsg S RECV MSG
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 如何防止 Blazor NavLink 组件的默认导航

    从 Blazor 3 1 Preview 2 开始 应该可以防止默认导航行为 https devblogs microsoft com aspnet asp net core updates in net core 3 1 preview
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 读取依赖步行者输出

    I am having some problems using one of the Dlls in my application and I ran dependency walker on it i am not sure how to
  • Xamarin Forms Binding - 访问父属性

    我无法访问页面的 ViewModel 属性以便将其绑定到 IsVisible 属性 如果我不设置 BindingContext 我只能绑定它 有没有办法可以在设置 BindingContext 的同时访问页面的 viewmodel root
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 如何在 C# 中获取 CMD/控制台编码

    我需要指定正确的代码页来使用 zip 库打包文件 正如我所见 我需要指定控制台编码 在我的例子中为 866 C Users User gt mode Status for device CON Lines 300 Columns 130 K

随机推荐

  • 将 std::string 转换为 std::chrono::duration

    我的目标是转换一张单曲string以形式 H M S to chrono duration in C 11 举个例子 为了转换 00 15 00 我想出了以下间接解决方案 我计算了两个时间点 1 00 15 00 和 2 00 00 00
  • querySelectorAll 检测输入中的值

    我有多个输入 我想根据用户是否在其中输入值来进行区分
  • 将数据插入 netezza 中的外部表时出现错误 [08S01] 通信链路失败

    我正在尝试将数据从文本文件加载到外部表中Netezza 这是我的命令 INSERT INTO XTABLE DHARMESH SELECT FROM EXTERNAL C Dhams mergeresult txt USING delimi
  • 圆 - 线相交无法正常工作?

    我在之后写了这个圆线相交检测http mathworld wolfram com Circle LineIntersection html 但看起来像是这样 或者我错过了一些东西 public static bool Intersect V
  • 将 C# 语句体 lambda 转换为 VB

    VS8 中的 VB 似乎不支持 转换带有语句主体的 lambda 表达式 我在 C 应用程序中使用它们 但现在必须将其转换为 VB 我正在动态创建一大堆控件 并且我希望能够动态地为它们提供事件处理程序 这样我就可以从数据库构建动态用户界面
  • 从已安装的@types导入?

    我已经安装了md5 也尝试过blueimp md5 包含相应类型的包 如下所示 nmp install save md5 types md5 nmp install save blueimp md5 types blueimp md5 当我
  • 根据 LINQ to SQL 中的变量选择列

    我在我的应用程序中使用 C 中的 LINQ to SQL 我需要能够根据变量选择一行的一列 这对于行来说很容易 因为它是一个简单的 where 子句 但我对仅选择特定列感到不知所措 到目前为止 这是我的代码 var permissions
  • Promise 是如何构建的?

    我想查看 JavaScript Promise 的源代码 我尝试过toSource 但它仍然只是显示 Promise native code 有什么办法可以看到本机代码吗 Promise 内置于 V8 Javascript 解释器中 并部分
  • 当用户不在该选项卡中时,隐藏闪亮应用程序中的选项卡。或者停用它

    我有下面闪亮的仪表板 我已经制作了列的单元格Species交互方式是 如果用户单击该列中的某个单词 例如 setosa 则会移动到选项卡Species 这是某人可以移动到此选项卡的唯一方法 问题是我不想要该选项卡Species当用户不在该选
  • 使用 JQuery 选中父列表项中的复选框?

    我对 Javascript 和 JQuery 是全新的 所以我一直在阅读它 并尝试在检查其中一个子项时检查 并设置为非活动状态 父列表项中的复选框 如果这没有任何意义 请查看列表结构 ul li li ul
  • 如何强制单向对多关系持续存在

    当一对多关系没有逆时 核心数据就会出现问题 对相关属性所做的更改不会保留 这是我们许多人都面临的问题 因为它可以通过谷歌搜索找到 这是想问 除了明显的答案或添加反向关系之外 你们中的一些人是否找到了实现持久性的技巧 解决方法 背景 即使文档
  • CMake 找不到 Visual C++ 编译器

    安装 Visual Studio 2015 并在以前的项目上运行 CMake 后 CMake 错误指出找不到 C 编译器 The C compiler identification is unknown The CXX compiler i
  • 如何修改Eclipse IDE中的键盘快捷键?

    Title more or less says it all Specifically I ve become increasingly annoyed that in order to run an ant script I have t
  • 在哪里可以找到 Python 类?

    我在哪里可以找到类似类的文档object or dict 我想知道他们有哪些方法以及哪些属性 我找到了大部分东西http docs python org 2但我找不到类的方法和属性object 如需详细文档 请访问在线文档 pydoc服务器
  • 在 C# 插件中调用 Dynamics Web API

    我在 Microsoft Dynamics 中有一个业务流程来处理新客户端的创建 当该过程完成时 我将附加一个工作流程 该工作流程会启动一个调用插件来执行一些自定义处理的操作 我正在关注this文章来设置这个过程 在我的插件中 我调用了 D
  • Sublime Text 3 html 自动补全无法正常工作

    我正在尝试使用 sublimetext3 来编辑 html If I do ul选项卡 然后它生成 ul ul 如果我做ul temp选项卡 然后它生成 ul class temp ul 然而 当我尝试时ul gt li temp选项卡 它
  • 寻找相近浮点数之间的“离散”差异

    假设我有两个浮点数 x and y 他们的价值观非常接近 计算机上可以表示离散数量的浮点数 因此我们可以按升序枚举它们 f 1 f 2 f 3 我希望找到距离x and y在此列表中 即它们是 1 2 3 还是n离散步骤分开 是否可以仅使用
  • 如何在android中的两个选项卡之间传递值

    我已经按照 android tab host 的教程进行操作 并且能够在模拟器上运行 现在我想做的只是在一个选项卡视图中实现一个文本框和按钮 一旦用户在文本框中输入并按下按钮 文本框中输入的值就应传递到第二个选项卡 我可以使用该值进行进一步
  • Xcode 8 二进制文件未在 itunesconnect 上显示以供审核

    我已经从 Xcode 8 制作了二进制文件并通过 Application Loader 3 6 上传到 App Store 也提交成功并弹出 但是二进制文件没有在 iTunesConnect 中显示 因为它超过了 19 小时 但它没有在 i
  • 斐波那契函数的问题。 C++

    应该返回n数组的位置 但我只得到 0 而不是值 int fibonacci int n int f 100 f 0 0 f 1 1 for int i 2 i