यह recursive function का एक शास्त्रीय उदाहरण है, जो एक कार्य है जो स्वयं को कॉल करता है।
आप इसे ध्यान से पढ़ें, तो आप,,, देखेंगे कि यह अपने आप में फोन करेगा, या recurse, बार बार जब तक यह तथाकथित आधार मामले पर पहुंच जाने पर x <= 1
जो उस समय शुरू कर देंगे "बैक ट्रैक" और गणना मानों को जोड़ना।
invoked with 3
Recursing on 2 and 1
invoked with 2
Recursing on 1 and 0
invoked with 1
x = 1, base case reached.
invoked with 0
x = 0, base case reached.
returning 2
invoked with 1
x = 1, base case reached.
returning 3
Fibonacci of 3: 3
का पता लगाने के एक पेड़ चित्रण लगेगा
की तरह कुछ
fib 4
fib 3 + fib 2
fib 2 + fib 1 fib 1 + fib 0
fib 1 + fib 0 1 1 1
1 1
:
public class Test {
static String indent = "";
public static int fibonacci(int x) {
indent += " ";
System.out.println(indent + "invoked with " + x);
if (x <= 1) {
System.out.println(indent + "x = " + x + ", base case reached.");
indent = indent.substring(4);
return 1;
}
System.out.println(indent + "Recursing on " + (x-1) + " and " + (x-2));
int retVal = fibonacci(x-1) + fibonacci(x-2);
System.out.println(indent + "returning " + retVal);
indent = indent.substring(4);
return retVal;
}
public static void main(String... args) {
System.out.println("Fibonacci of 3: " + fibonacci(3));
}
}
उत्पादन निम्नलिखित है:
निम्नलिखित कोड स्पष्ट रूप से कलन विधि का पता लगाने के लिए बाहर प्रिंट
पुनरावर्ती कार्यों को लिखते समय सोचने के महत्वपूर्ण भाग हैं:
1. आधार मामले की लें देखभाल
अगर हम ऊपर के उदाहरण में if (x<=1) return 1;
भूल गया था क्या हुआ होता?
2. सुनिश्चित पुनरावर्ती कॉल किसी भी तरह आधार मामले
अगर हम गलती से एल्गोरिथ्म संशोधित fibonacci(x)+fibonacci(x-1);
यदि आपको पुनरावर्ती कार्यों को समझने में परेशानी हो रही है, तो एक पुनरावर्ती फैक्टोरियल शुरू करना आसान हो सकता है। http://groups.engin.umd.umich.edu/CIS/course.des/cis400/cpp/factorial.html –
रिकर्सन को समझने के लिए आपको पहले रिकर्सन को समझना होगा। ऐसा करने के लिए, यहां जाएं: http://stackoverflow.com/questions/717725/understanding-recursion –
'if (x <2) x वापस लौटें;' –