理解用Java进行递归指数编程

时间:2015-02-15 17:43:30

标签: java

我很难理解递归编程。我真的希望如果有人能够向我解释下面的示例代码的每个“循环”中发生了什么,那么我就能理解递归正在做什么。

这是代码:

public static int potenz2(int x, int n) {
        int ergebnis = 0;
        if(n == 0){ 
            ergebnis = 1;
        }else{
            ergebnis = x * potenz2(x, n-1);
        }
        System.out.println(ergebnis);

        return ergebnis; 

        }

1 个答案:

答案 0 :(得分:2)

你的方法是将x提高到n的幂。

递归意味着函数/方法直接或间接调用自身。在您的情况下,potenz2()方法直接调用自身。

算法:

  1. 算法的工作方式是递减第二个参数,因为:
    • potenz2(10, 1) = 10(10的强度为1)
    • potenz2(10, 2) = 100 = 10 * potenz(10, 1)
    • potenz2(10, 3) = 1000 = 10 * potenz(10, 2) = 10 * 10 * potenz(10, 1)
  2. 您的程序可以简化:

    public static int potenz2(int x, int n) {
        if (n == 0) {
            return 1;
        } else {
            return x * potenz2(x, n - 1);
        }
    }
    
  3. 结束条件是0的幂是1。