Java與C語言都支持遞歸,但是它們之間有一些細微的差別。
首先,Java遞歸的方法必須在類的內部。在Java中,類是組織代碼的主要方式,而C語言的遞歸函數可以單獨存在。
// Java 中的遞歸方法
public class RecursionExample {
public static void main(String[] args) {
int result = recursiveFunction(5);
System.out.println("The result is: " + result);
}
public static int recursiveFunction(int n) {
if(n == 0) {
return 1;
} else {
return n * recursiveFunction(n-1);
}
}
}
// C 語言中的遞歸函數
#includeint recursiveFunction(int n) {
if(n == 0) {
return 1;
} else {
return n * recursiveFunction(n-1);
}
}
int main() {
int result = recursiveFunction(5);
printf("The result is: %d\n", result);
return 0;
}
另一個區別是在遞歸調用上。Java中的遞歸調用是通過方法名調用的,而C語言中是通過函數指針調用的。Java的遞歸方法可以使用this關鍵字來引用當前對象,而C語言則不支持this關鍵字。
// Java 中的遞歸方法
public class RecursionExample {
public static void main(String[] args) {
RecursionExample rec = new RecursionExample();
int result = rec.recursiveFunction(5);
System.out.println("The result is: " + result);
}
public int recursiveFunction(int n) {
if(n == 0) {
return 1;
} else {
return n * this.recursiveFunction(n-1);
}
}
}
// C 語言中的遞歸函數
#includeint (*recursiveFunction)(int);
int recursive(int n) {
if(n == 0) {
return 1;
} else {
return n * recursiveFunction(n-1);
}
}
int main() {
recursiveFunction = &recursive;
int result = recursiveFunction(5);
printf("The result is: %d\n", result);
return 0;
}
雖然Java和C語言有許多相似之處,但它們之間的一些細微差別可以使編寫遞歸函數時產生不同的結果。