在 C 中递归计算斐波那契数

2023-12-03

我正在尝试通过编写一个简单的程序来输出斐波那契数来学习C。它不起作用。

斐波那契.h

unsigned int fibonacci_recursive(unsigned int n);

斐波那契.c

#include <stdio.h>
#include "fibonacci.h"

main() {
    unsigned int i;
    for (i = 0; i < 10; i++) {
        printf("%d\t%n", fibonacci_recursive(i));
    }
    getchar();
}

fibonacci_recursive.c

unsigned int fib_rec(unsigned int n);

main(unsigned int n) {
     return fib_rec(n);
}

unsigned int fib_rec(unsigned int n) {
    if (n == 0) {
        return 0;
     } 
     if (n == 1) {
           return 1;
     }
     return fib_rec(n - 1) + fib_rec(n - 2);
}

这是当我尝试构建项目时 VS 2010 给我的错误消息:

1>ClCompile:
1>  fibonacci_recursive.c
1>fibonacci_recursive.obj : error LNK2005: _main already defined in fibonacci.obj
1>fibonacci.obj : error LNK2019: unresolved external symbol _fibonacci_recursive referenced in function _main
1>c:\users\odp\documents\visual studio 2010\Projects\Fibonacci\Debug\Fibonacci.exe : fatal error LNK1120: 1 unresolved externals
1>
1>Build FAILED.
1>

我在这里做错了什么?感谢您帮助刚接触 C 的人。


你的方法看起来很奇怪,你应该:

  • 主文件(例如main.c)与主要方法,其中包括fibonacci.h
  • a fibonacci.h与原型unsigned int fibonacci_recursive(unsigned int n);
  • a fibonacci.c与该方法的实现,它应该包括fibonacci.h too

其实你定义main功能也两次..

main.c

#include <stdio.h>
#include "fibonacci.h"

main()
{
    unsigned int i;
    for (i = 0; i < 10; i++)
    {
        printf("%d\t%n", fibonacci_recursive(i));
    }
    getchar();
}

斐波那契.h

unsigned int fibonacci_recursive(unsigned int n);

斐波那契.c

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

在 C 中递归计算斐波那契数 的相关文章

  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在 32 位或 64 位配置中以编程方式运行任何 CPU .NET 可执行文件?

    我有一个可在 32 位和 64 位处理器上运行的 C 应用程序 我试图枚举给定系统上所有进程的模块 当尝试从 64 位应用程序枚举 32 位进程模块时 这会出现问题 Windows 或 NET 禁止它 我认为如果我可以从应用程序内部重新启动
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 使用管道时,如果子进程数量大于处理器数量,进程是否会被阻塞?

    当子进程数量很大时 我的程序停止运行 我不知道问题是什么 但我猜子进程在运行时以某种方式被阻止 下面是该程序的主要工作流程 void function int process num int i initial variables for
  • 如何设置 log4net 每天将我的文件记录到不同的文件夹中?

    我想将每天的所有日志保存在名为 YYYYMMdd 的文件夹中 log4net 应该根据系统日期时间处理创建新文件夹 我如何设置它 我想将一天中的所有日志保存到 n 个 1MB 的文件中 我不想重写旧文件 但想真正拥有一天中的所有日志 我该如
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • 使用动态 ID 选择 Multiple SelectManyCheckBox 中的所有项目

    我想使用 JSF 顶部的 PrimeFaces 组件来选择某些复选框组中的所有复选框 我的代码是这样的
  • 获取 RecyclerView 中的可见项

    我需要知道哪些元素当前显示在我的 RecyclerView 中 没有相当于OnScrollListener onScroll ListView 上的方法 我尝试与View getGlobalVisibleRect 但是这个 hack 太丑陋
  • 以编程方式登录站点

    这可能听起来很愚蠢 但是我们可以通过传递用户凭据 用户 ID 和密码 以编程方式登录 Linkedin 等网站吗 我不是在谈论使用 OAuth 或其他机制 Edit 您可以使用脚本以这种方式登录许多站点 我通常更喜欢使用 Beautiful
  • UITextView - 设置字体不适用于 XCode 5 上的 iOS 6

    我正在为我的用户界面使用故事板 我之前使用的是 XCode 4 6 并在 iOS 6 上发布 此后我使用 XCode 5 更新到 iOS 7 并更新了 Storyboard 以与 XCode 5 很好地配合 但我有一个问题 UITextVi
  • 在 React 的 useEffect() 中获取数据返回“未定义”

    我正在尝试从数据库中获取数据 这是一个获取请求 只要我在异步函数中使用获取的数据 一切都可以正常工作 但除此之外 它只是返回 未定义 我究竟做错了什么 感谢您的帮助 const accountInfos setAccountInfos us
  • 创建一个新文件,文件名包含循环变量,python [重复]

    这个问题在这里已经有答案了 我想在循环上运行一个函数 并且想将输出存储在不同的文件中 以便文件名包含循环变量 这是一个例子 for i in xrange 10 f open file i dat w f write str func i
  • Chrome 和 CSS 属性选择器

    我有以下 HTML 代码 我想用 css 格式化无法更改的数据格式 来自 xml 我必须为具有不同属性值的元素赋予不同的样式 我想使用 CSS 属性选择器 body background color black s text decorat
  • 如何在 Grails 脚本中访问服务?

    关于 create script run script 的文档很少 所以我想知道是否可以在 grails 脚本中注入 使用域类 在普通的 Grails 类中 我可以注入如下服务 定义我的服务 但我不确定 grails 脚本中的位置 要在脚本
  • jQuery,如何在 .load() 之后重新绑定 html 元素

    我有一个 html 组件 单击按钮后将重新加载该组件 组件的某些元素绑定到单击和悬停处理程序 一切工作正常 直到 load 调用函数来重新加载组件 加载组件的元素未绑定到相应的处理程序 此时 我将 js 脚本放在组件的末尾 以便它绑定元素
  • Flask 中的一对一关系

    我正在尝试使用 SqlAlchemy 在 Flask 中创建一对一关系 我按照之前的post我创建了如下类 class Image db Model tablename image image id db Column db Integer
  • 使用 writeAttribute() 方法使用 XMLWriter 进行 php XML 导出问题

    我正在将表数据导出到 xml 中 其中在内容列中包含多语言内容并混合了 html 例如 xmlWriter gt writeAttribute value contents record name testing contents Just
  • JsFiddle 上的鼠标事件不起作用?

    我的小提琴在这里 但我不明白为什么它没有在 onmouseout 事件上调用我的函数 http jsfiddle net foreyez Xf6LW 有任何想法吗 工作正常 您只需将函数放在文档的头部 或元素位于 DOM 中之后的主体中 即
  • 如何使用 Telethon bot API 获取频道实体?

    我无法使用 Telethon Bot 获取对话框 因为该方法仅适用于客户端 因此 当我尝试使用其 id 访问实体时 我收到错误 如果我无法解析所有通道并且无法通过 id 访问它们 我该如何访问实体 通道 我想解析来自私人群组的消息并使用 T
  • Tensorflow和OpenCV实时分类

    我正在测试机器学习水域并使用TS成立模型来重新训练网络以对我想要的对象进行分类 最初 我的预测是在本地存储的图像上运行的 我意识到从文件中取消持久化图形需要 2 5 秒的时间 并且大约在同一时间运行实际的预测 此后 我调整了我的代码以合并来
  • CreateProcess 立即返回,但前提是启动的进程被隐藏

    我有下面的 Delphi 代码来为 CreateProcess API 调用提供一个友好的包装器 function StartProcess ExeName string CmdLineArgs string ShowWindow bool
  • Apache Spark 处理 case 语句

    我正在处理将 SQL 代码转换为 PySpark 代码的过程 并遇到了一些 SQL 语句 我不知道如何处理 pyspark 中的案例陈述 我计划创建一个 RDD 然后使用 rdd map 然后进行一些逻辑检查 这是正确的做法吗 请帮忙 基本
  • 非常简单的 html 的意外边距

    我有一个非常简单的html 红色 div 位于蓝色 div 内部 并且上边距为 10 像素 在非 ie 浏览器上 蓝色框距离视口顶部 10 px 红色 div 位于蓝色 div 的最顶部 我期望的是 ie 行为 红色 div 必须距蓝色 d
  • Visual Studio 2012支持哪个XP版本[作为目标操作系统]

    Visual Studio 2012 支持哪个版本的 Windows XP 编辑 VS12支持编译到哪个版本 我找到了这篇文章 http blogs msdn com b vcblog archive 2012 10 08 windows
  • 使用 .NET Interop 在 Adob​​e Reader 9 中以编程方式打印

    我正在使用 VB Net WinForms 我想调用 Adob e Reader 9 ActiveX 控件来打印一些 PDF 我已经将ActiveX控件添加到VS工具箱中 dll是AcroPDF dll COM名称 Adobe PDF Re
  • 在 C 中递归计算斐波那契数

    我正在尝试通过编写一个简单的程序来输出斐波那契数来学习C 它不起作用 斐波那契 h unsigned int fibonacci recursive unsigned int n 斐波那契 c include