这里的递归是如何工作的?

2023-11-27

Code 1:

public static int fibonacci (int n){ 
    if (n == 0 || n == 1) { 
        return 1; 
    } else { 
        return fibonacci (n-1) + fibonacci (n-2); 
    }        
} 

你如何使用fibonacci如果你还没有解释完它是什么?我已经能够理解在其他情况下使用递归,如下所示:

Code 2:

class two 
{
    public static void two (int n) 
    {
        if (n>0) 
        {
            System.out.println (n) ;
            two (n-1) ;
        }
        else
        {
            return ;
        }
    } 

    public static void main (String[] arg) 
    {
        two (12) ;
    }
}

但在代码 2 的情况下,n最终会达到一个不满足的点n>0并且该方法将停止递归调用自身。不过,就代码 2 而言,我不知道它如何能够从 1 中获得自身,如果n=1是2、3、5的起点,依此类推。另外,我不明白这条线如何return fibonacci (n-1) + fibonacci (n-2)会工作,因为fibonacci (n-2)在某种意义上必须包含fibonacci (n-1)为了工作,但它还没有出现。

我正在看的书说它会起作用。它是如何工作的?


好吧,抛开编译器实际上对代码做了什么(它很可怕,但很漂亮)以及 CPU 实际如何解释代码(同样),有一个相当简单的解决方案。

考虑这些文本说明:

对编号块进行排序:

  1. 选择一个随机块。
  2. 如果它是唯一的块,则停止。
  3. 移动方块 左侧数字较低, 右边的数字更大。
  4. 对编号较低的块进行排序。
  5. 对编号较大的块进行排序。

当您看到说明 4 和 5 时,系统会要求您重新开始整个过程​​。然而,这不是问题,因为您仍然知道如何开始该过程,并且当一切最终解决时,您将获得一堆已排序的块。你可以用纸条盖住说明,遵循它们也不会更困难。

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

这里的递归是如何工作的? 的相关文章

随机推荐

  • 如何在 Polymer 中调度和监听自定义事件?

    我希望子元素调度自定义事件 父元素侦听该事件并采取一些操作 使用 Polymer 时如何做到这一点 您可以从聚合物元素分派自定义事件 如下所示 dispatchEvent new CustomEvent nameOfEvent 然后 父元素
  • 使用 Swift 将类中的结构保存到 NSUserDefaults

    我有一个类 类内部是一个基于全局结构的 快速 数组 我想将此类的数组保存到 NSUserDefaults 中 这是我的代码 struct mystruct var start NSDate NSDate var stop NSDate NS
  • 带有 EventHub 的达美实时表

    我正在尝试使用增量实时表从 eventhub 创建流 但我在安装库时遇到问题 是否可以使用 sh pip 使用 Delta Live 表安装 maven 库 我想安装 com microsoft azure azure eventhubs
  • 为什么编译器无法识别元模型属性?

    java se 6 项目是否支持 eclipselink jpa2 的标准 api 如果没有 那是我的问题 我是否需要在 persistence xml 中为标准 api 指定任何特殊内容 这是我的条件查询 final EntityType
  • 使用 C++ 可变长度参数时,如何从 _TCHAR * 转换为 char *?

    我们需要将一个格式 TCHAR 字符串和一些 char 字符串传递到具有可变长度参数的函数中 inline void FooBar const TCHAR szFmt const char cArgs 所以它可以这样调用 char foo
  • 如何使用 JavaMail 将多个文件附加到电子邮件?

    以下 Java 代码用于将文件附加到电子邮件 我想发送multiple通过电子邮件归档附件 任何建议 将不胜感激 public class SendMail public SendMail throws MessagingException
  • 如何为可缓存 PCIe BAR 进行 mmap

    我正在尝试编写一个自定义驱动程序mmap PCIe BAR 的函数 目标是使该 BAR 可缓存在处理器缓存中 我知道这不是实现最高带宽的最佳方法 并且写入顺序是不可预测的 本例中也不是问题 这类似于中所描述的如何阻止 MMAP 缓存值 处理
  • Chef Chef-validator.pem 安全性

    您好 我正在异地使用厨师设置一组机器 如果其中一台机器被盗 攻击者可以通过拥有chef validator pem 对我的chef server 或其他节点造成什么损害 他们还可以通过厨师获得哪些其他东西 谢谢 这是最近 Foodfight
  • Google 云端硬盘 - 无法通过经过身份验证的 (OAuth2) 请求下载缩略图

    对于所有 Google 文档 我无法从随文件响应返回的 ThumbnailLink 属性下载缩略图 我总是收到 403 禁止 错误页面 其中包含类似于以下内容的消息 您的客户端没有权限获取 URL 缩略图链接从该服务器 客户端IP地址 cl
  • 如何根据CASE执行不同的SELECT语句

    我在使用 CASE 语句执行查询时遇到问题 根据我的条件 例如长度 我想执行不同的 SQL 语句 有问题的示例查询如下 select case when char length 19480821 8 then select count 1
  • Zend Framework TDG 与 Doctrine [重复]

    这个问题在这里已经有答案了 可能的重复 什么时候应该使用 ORM 主义 什么时候应该使用 zend db table 简而言之 什么更好 为什么 我目前使用 Zend Framework TDG 但正在考虑转向 Doctrine 已经从 Z
  • 具有显式域的本地主机上的 Cookie

    我一定是错过了一些关于 cookie 的基本知识 在本地主机上 当我在服务器端设置 cookie 时and将域显式指定为 localhost 或 localhost 某些浏览器似乎不接受cookie 火狐 3 5 我在 Firebug 中检
  • 适用于 Windows 的最佳轻量级 Web 服务器(仅静态内容)[关闭]

    Closed 这个问题是无关 目前不接受答案 我在 Windows 中运行应用程序服务器 IIS6 0 并使用 Zend Server 来执行 PHP 我正在同一台计算机上寻找轻量级仅静态内容的 Web 服务器 它将重温 IIS 表单处理静
  • “类型错误:‘函数’对象不支持项目分配”

    我有两个矩阵 fi f1 Nij N11 N12 N1n f2 N21 N22 N2n fn Nn1 Nn2 Nnn 我想乘以 f1 to each element of the 1st row f2 to each element of
  • ListView光标变化和闪烁

    当光标出现在某个项目上时 我试图更改标准 ListView 上出现的光标 然而 当鼠标变为手指光标 然后又回到我要求的状态时 我得到了闪烁的效果 我试图将这种闪烁 更改隔离到手形光标 但无法弄清楚它发生在哪里或如何阻止它 为了复制这个 1
  • 如何启用 WCF 日志记录以便将其写入数据库?

    我希望能够在数据库中记录消息信息 并且我正在尝试决定如何最好地做到这一点 是否可以将 WCF 日志记录机制配置为写入数据库而不是文件 谢谢 你需要有两件事 启用 NET 跟踪的正确配置 跟踪侦听器 用于捕获跟踪消息并将其存储在数据库中 Fo
  • 实体框架 6 提供开箱即用的存储库和 UoW

    但如何使用它呢 我有一个Code First项目建立 并尝试使用这个新的 EF6 进行一些操作 阅读至少 2 岁有关 EF4 5 的各种帖子 博客 但对于 EF6 却一无所知 假设我有这些实体 public DbSet
  • 基于注释的验证框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在寻找一个基于注释的验
  • PHP HTML 创建库 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在寻找一个 PHP 解
  • 这里的递归是如何工作的?

    Code 1 public static int fibonacci int n if n 0 n 1 return 1 else return fibonacci n 1 fibonacci n 2 你如何使用fibonacci如果你还没