Recurssion के नाम से ही हमे पता चल रहा है की यह उस क्रिया का नाम है जो री अकर हो वही
recurssion होता है | जैसे अगर हम किसी function में उसी function को कॉल किया जाता
है तो उस समय हम इसका प्रयोग करते है |
उदहारण :
अगर हम किसी व्यस्त रहने वाले भोजनालय में जाते है , तो हम देखते है की ,वाहा लोग आ रहे है ,खाना
खा रहे है बिल चुकाते है और चले जाते है | अब अगर हम देखे की येही क्रिया जब तक चलती रहेगी जब तक
वहा अंतिम व्यक्ति खाना न खा ले या भोजनालय बंद होने का समय नहीं हो जाये |
अगर इसी बात को में आपको जावा के रूप में कहू तो में एक ग्रहिक के आने से लेकर बिल जमा करने तक की
क्रिया को function में लिखूंगा और हर ग्रहिक को उसका आर्गुमेंट बनाऊँगा | जब भी एक ग्रहिक (function )
ख़तम होगा , तभी हम इसी function को फिर से कॉल करेगा |
इसी बात को ज्यादा समझने के लिए आप निचे binary सर्च का उदहारण देखिये और देखिये की कैसे हमने इसी क्रिया
का प्रयोग प्रोग्राम में कैसे किया है :
/**
* एक अर्रे A जो बड़ते हुए क्रम में जमा हुआ हो, उसमे से कोई value सर्च करनी है
* अगर value मिल जाये तोह उस value के इंडेक्स को रिटर्न करो नहीं तो -1 रिटर्न करो
*/
static int binarySearch(int[] A, int loIndex, int hiIndex, int value) {
if (loIndex > hiIndex) {
// शुरवाती जगह फिनाल जगह के बाद आ रही हूँ ,
// तो इसका मतलब है ,की बताई गयी रंगे में कोई element नहीं होगा
// इसीलिए यहाँ पर खली लिस्ट होगी तोह हम -1 रिटर्न कराएँगे
return -1;
}
else {
// लिस्ट के बिलकुल बीच में देखो ,अगर वह value मिल जाती है तो
// value को रिटर्न करो , नहीं तोह ,फिर से सर्च करो बिलकुल इसी
// तरह से या तोह पहले हिस्से में ,या फिर दुसरे में
// जो बीच में सर्च करते वक़्त लिस्ट में बन गए थे
int middle = (loIndex + hiIndex) / 2;
if (value == A[middle])
return middle;
else if (value < A[middle])
return binarySearch(A, loIndex, middle - 1, value);
else // value must be > A[middle]
return binarySearch(A, middle + 1, hiIndex, value);
}
} // binarySearch() का अंत
class Binarysearchcg {
static int Binarysearch(int[] A, int loIndex, int hiIndex,int value) {
if(loIndex > hiIndex) {
return -1;
}
else {
int middle= (hiIndex+loIndex)/2;
if(value > A[middle])
{
loIndex= middle;
return Binarysearch(A, loIndex, hiIndex, value);
}
else if(value < A[middle]) {
hiIndex = middle;
return Binarysearch(A, loIndex, hiIndex, value);
}
else {
return middle; }
}
}
public static void main(String[] args) {
int[] sortedarray = { 1, 2, 5, 6, 7, 8, 9, 13 ,15};
int valuetosearch=9;
int found=Binarysearch(sortedarray , 0 ,9 , valuetosearch);
System.out.println(found);
}
}