मान लें कि हमारे पास निम्न वर्ग हैं:
class A {
void recursive(int i) {
System.out.println("A.recursive(" + i + ")");
if (i > 0) {
recursive(i - 1);
}
}
}
class B extends A {
void recursive(int i) {
System.out.println("B.recursive(" + i + ")");
super.recursive(i + 1);
}
}
अब recursive
कक्षा A में कॉल करें :
public class Demo {
public static void main(String[] args) {
A a = new A();
a.recursive(10);
}
}
आउटपुट 10 से नीचे गिने जाने की उम्मीद है।
A.recursive(10)
A.recursive(9)
A.recursive(8)
A.recursive(7)
A.recursive(6)
A.recursive(5)
A.recursive(4)
A.recursive(3)
A.recursive(2)
A.recursive(1)
A.recursive(0)
आइए भ्रमित करने वाले भाग पर जाएं। अब हम recursive
कक्षा बी में बुलाते हैं ।
अपेक्षित :
B.recursive(10)
A.recursive(11)
A.recursive(10)
A.recursive(9)
A.recursive(8)
A.recursive(7)
A.recursive(6)
A.recursive(5)
A.recursive(4)
A.recursive(3)
A.recursive(2)
A.recursive(1)
A.recursive(0)
वास्तविक :
B.recursive(10)
A.recursive(11)
B.recursive(10)
A.recursive(11)
B.recursive(10)
A.recursive(11)
B.recursive(10)
..infinite loop...
यह कैसे होता है? मुझे पता है कि यह एक उदाहरण है, लेकिन यह मुझे आश्चर्यचकित करता है।
एक ठोस उपयोग के मामले के साथ पुराना सवाल ।