我很难理解递归编程。我真的希望如果有人能够向我解释下面的示例代码的每个“循环”中发生了什么,那么我就能理解递归正在做什么。
这是代码:
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;
}
答案 0 :(得分:2)
你的方法是将x提高到n的幂。
递归意味着函数/方法直接或间接调用自身。在您的情况下,potenz2()
方法直接调用自身。
算法:
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)
您的程序可以简化:
public static int potenz2(int x, int n) {
if (n == 0) {
return 1;
} else {
return x * potenz2(x, n - 1);
}
}