当前位置: 首页 > 面试题库 >

递归如何工作?

唐渊
2023-03-14
问题内容

请以最简单的方式说明递归的工作方式。


问题答案:

这是一个递归方法的简单示例:-

public int recur(int count) {
   if (count < 10) {
       return count + recur(count++);
   }
   return count;
}

System.out.println(recur(0));  // Invoke first time


 类似资料:
  • 问题内容: 代码1: 如果还没有完成解释,该如何使用?我已经可以理解在其他情况下使用递归: 代码2: 但是,在代码2的情况下,最终将达到它无法满足的程度,并且该方法将停止递归调用自身。但是,在代码2的情况下,如果作为起点到2、3和5,依此类推,我看不到如何从1获得自身。另外,我看不到该行的工作方式,因为在某种意义上必须包含该行才能工作,但目前为止还不行。 我正在看的书说它会起作用。它是如何工作的?

  • 我几乎理解了尾递归是如何工作的,以及它与普通递归之间的区别。我只是不明白为什么它不要求堆栈记住它的返回地址。 在尾递归函数中调用函数本身后没有什么可做的,但对我来说这没有意义。

  • 问题内容: 如何递归所有目录和子目录? 问题答案: 第一个参数表示要搜索的正则表达式,而第二个参数表示应搜索的目录。在这种情况下,表示当前目录。 注意:这适用于GNU grep,在某些平台(如Solaris)上,必须专门使用GNU grep而不是传统实现。对于Solaris,这是命令。

  • 请在下面的代码中解释递归语句的工作原理。 我的理解是: 在上面的语句中,方法调用自己直到结束。假设我们要获取6的阶乘,它将作为参数发送给此方法。它将作为参数接收,然后将检查的值;如果它是1,则返回1。但如果它不是1,就像我们的情况下它是6,那么递归语句将运行。 现在我面临的问题是,第一次 变为 5 并乘以 n,其值为 6,则变为 30。那么这30个人会去哪里呢? 然后,该方法将调用自身,这次< c

  • 该方法的规范声称,该方法,从根开始,将移除最左侧的节点,并修复树结构。它还指出,如果最左侧节点没有左子节点,则将右子节点(可能为)作为左子节点附加到最左侧节点的父节点(我在代码中看不到这种情况发生的地方)。代码如下: 我只是不明白它是如何返回整个树和返回最左边的节点。主要是第一部分让我感到困惑,它说如果返回右边的子项。如果我深入到树中(由于递归调用),返回右不就会切断树的很多部分吗?

  • 我对函数式编程很陌生,尤其是下面使用的Scheme。我正在尝试使以下函数是递归的,尾递归的。基本上,该函数的作用是对两个字符串的对齐方式进行评分。当给定两个字符串作为输入时,它会比较每个“列”字符,并根据在称为 scorer 的函数中实现的评分方案(由下面的代码中的函数调用)来累积该对齐的分数。 我有一个想法,用一个帮助函数来累积分数,但我不太确定如何去做,因此我该如何让下面的函数尾递归呢?