Java與C語言都支持遞歸,但是它們之間有一些細(xì)微的差別。
首先,Java遞歸的方法必須在類的內(nèi)部。在Java中,類是組織代碼的主要方式,而C語言的遞歸函數(shù)可以單獨(dú)存在。
// 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 語言中的遞歸函數(shù)
#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;
}
另一個區(qū)別是在遞歸調(diào)用上。Java中的遞歸調(diào)用是通過方法名調(diào)用的,而C語言中是通過函數(shù)指針調(diào)用的。Java的遞歸方法可以使用this關(guān)鍵字來引用當(dāng)前對象,而C語言則不支持this關(guān)鍵字。
// 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 語言中的遞歸函數(shù)
#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語言有許多相似之處,但它們之間的一些細(xì)微差別可以使編寫遞歸函數(shù)時產(chǎn)生不同的結(jié)果。