【问题标题】:How does recursion work? [closed]递归是如何工作的? [关闭]
【发布时间】:2012-10-04 19:20:43
【问题描述】:

请以最简单的方式解释递归的工作原理。

【问题讨论】:

标签: java recursion


【解决方案1】:

递归是一种从自身内部调用自身的方法。

例子:

public void recur(int x)
    recur(10);
end

【讨论】:

    【解决方案2】:

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

    public int recur(int count) {
       if (count < 10) {
           return count + recur(count++);
       }
       return count;
    }
    
    System.out.println(recur(0));  // Invoke first time
    

    【讨论】:

    • 是的,我理解在处理数字时,但例如,如果元素以特定字符开头,我正在使用这种方法从数组列表中删除元素。这是方法:
    • @LexyFeito 那么你应该用你尝试过的一些代码来问那个特定的问题..
    • 私有静态 ArrayList deleteItems(ArrayList table, char ch) { ArrayList list2 = new ArrayList(); list2.add("嘿"); if(table.isEmpty() || table.size() == 0) { return list2; } if(table.get(0).charAt(0) == ch){ table.remove(0);返回 deleteItems(table, ch); }else{ list2.add(table.get(0)); table.remove(0);返回 deleteItems(table, ch); } }
    • 在你的问题正文中发布,而不是在评论中,@Lexy。并且一定要说明你对那个代码的实际问题是什么。
    • 我还在学习如何在这个网站上工作
    【解决方案3】:

    递归是函数调用自身的时候:

    int factorial(int integer)
    {
        if (integer == 1)
            return 1;
        else
            return (integer*(factorial(integer-1)));
    }
    

    【讨论】:

      【解决方案4】:

      如前所述,递归是函数调用自身的时候。这里使用factorial 进行说明,其中factorial(5) 在数学上计算为值5 * 4 * 3 * 2 * 1

      public int factorial(int x) {
         if (x == 1) return 1;
         else return x * factorial (x - 1);
      }
      
      // Try routine
      factorial(3);
      

      计算结果为

       factorial(1) = 1                                        = 1
       factorial(2) = 2 * factoral(1)                          = 2 * 1 
       factorial(3) = 3 * (2 * factorial(2) * (factorial(1))   = 3 * 2 * 1
       ...
      

      【讨论】:

      • 值为0!是 1,所以这一行 if (x == 1) return 1; 应该是 if (x == 0) return 1;
      【解决方案5】:

      通常,它是一个函数,自己计算一个结果,然后调用自己来获取其余结果

      例如,要得到小于或等于 3 的所有正数,函数会说:“一个结果是 3,其余结果都是小于或等于 2 的正数。让我们用 2 调用自己并添加这个结果是我计算出来的。”

      当然,递归函数需要小心有一个“结束条件”,否则它们永远不会返回结果。在本例中,结束条件是当函数以 0 调用时,它应该只返回 0。

      【讨论】:

        猜你喜欢
        • 2021-11-14
        • 2020-08-18
        • 1970-01-01
        • 2011-08-19
        • 2013-03-20
        • 2011-01-25
        • 2016-11-09
        • 1970-01-01
        相关资源
        最近更新 更多