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

什么是递归

柳才良
2023-03-14
问题内容

我一直在尝试将编程的递归作为一个概念进行研究(尽管我专门研究Java),而这正是我最好的理解:

例如,在现实生活中,递归是当我们将两个反射镜彼此相对放置并且它们之间产生的图像是递归的。

但是我在编程中没有得到这个算法吗?有人可以给我一个简化的例子来理解递归吗?


问题答案:

基本上,函数是递归的

  1. 函数具有简单的基本情况,何时
  2. 所有其他情况都有规则化简为基本情况。

例如,要计算阶乘:

public static long factorial(int i)
{
    // This is the base case
    if(i == 0)
    {
         return 1;
    }
    else
    {
        // This reduces the problem to something closer to the base case
        return i * factorial(i - 1);
    }
}


 类似资料:
  • 递归是一种解决问题的方法,将问题分解为更小的子问题,直到得到一个足够小的问题可以被很简单的解决。通常递归涉及函数调用自身。递归允许我们编写优雅的解决方案,解决可能很难编程的问题。

  • 邮件列表和网上讨论中似乎经常出现的一个话题是攻读计算机科学学位的优点(或不足)。对于否定的一方来说,一个似乎一再出现的论点是,他们已经编码了一些年了,他们从来没有使用过递归。 所以问题是: 什么是递归? 何时使用递归? 为什么人们不使用递归?

  • 我有一个(co?)递归函数对,它们处理元组列表,并根据一些开始和结束条件将它们折叠成批处理。 我做得不多,所以我可能很愚蠢。 我已经修改了一个简单的非尾部递归版本,通过明确引入一个“tot”参数来构成当前折叠状态,我认为这是尾部递归的,但我在大输入上得到了可怕的堆栈溢出。。。。(在调试器和(调试)中)。exe) 作为一个明确的折叠,可能有更好的方法来做到这一点...但这几乎不是重点,重点是为什么它

  • 问题内容: 什么是@id? 在$ resource doc页面上,有人在下面说了这一点,但是我还是不明白。 如果参数值以@开头,则从数据对象中提取该参数的值(对非GET操作有用)。“这里的数据对象是指使用非GET” class“操作的对象,或者如果使用非GET实例操作,则为实例本身。 问题答案: 如果我正确理解了这一点,而我可能没有理解,则该参数说明了向url变量提供数据的另一种方式。 给定此方法

  • 我在和。他们每个人具体做什么?

  • 我确实有大约一年的编程经验,但主要是在CodeAcademy上,还有各种书籍、youtube视频和维基百科文章。