C++ : CALL BY REFERENCE

By  

what is C++ : CALL BY REFERENCE :- इससे पहले के article मे function type ,function structure और function parameter को discuss किया है इस article मे recursion function को  discuss करेगे |

Recursion Function

जब किसी function को खुद को कल करता है तब इस function को recursion function कहते है  | एक function मे दुसरे function को call किया जाता है | इस function मे दुसरे function को call करना आसान होता है | लेकिन जब कोई function मे खुद function को call किया जाता है | इस function को recusion function कहते है | किसी recursion function का struture निन्म होता है :-

void recursion_function ()

{

…………..

recursion_function ();

…………..

}

main()

{

…………..

recursion_function ()

…………..

}

इस struture मे recursion_function () एक recursion Fnction है क्योकि recursion_function () की body मे recursion_function () को call किया जाता है | और main() function मे recursion_function () को call किया जाता है |

किसी programming code मे braching करके भी recursion_function () को call किया जाता है | ब्रचिंफ़ infinite recusion को बंद किया जाता है | क्योकि जब तक braching if-else  condition true होगी तब तक function को खुद  call करेगे |

उदाहरन के लिए

void recursion_function ()

{

…………..

if(condition)

{

recursion_function ();

}

…………..

}

main()

{

…………..

recursion_function ()

…………..

}

इसका उदाहरन होता है :-

इस उदाहरन मे factorial को calculate किया जाता है | इस उदहारण मे resursion function को use किया गया है | इसका source code निन्म होता है |

#include<iostream.h>

#include<conio.h>

#include<math.h>

void fac( int );

void main()

{

int a ;

cout<<“Enter value   : “;

cin>>a;

cout<<“Fctorial of”<<a<<“is”<<fac(a);

getch();

}

void fac( int f )

{

if(f>1)

{

return f*fac(f-1);

}

else

{

return 1;

}

}

इस उदाहरन मे सबसे पहले यूजर द्वारा value को input किया जाता है | इस value को  variable ‘a’ को assign किया जाता है | suppose यूजर द्वारा input की value 5 है तब

fac() मे ,

सबसे पहले condition check की जाती है | (4>1 ) होगी तब num*fac(num-1)की value को return किया जाता है | अतः यह पर 4*fac(4-1) return होता है |

उसके बाद fac(3) को call किया जाता है इस function मे अगर (3>1 ) होगी तब num*fac(num-1)की value को return किया जाता है |  और  4*3*fac(3-1) return होगा |

उसके बाद fac(2)को call किया जाता है इस function मे अगर (2>1) होगी तब num*fac(num-1)की value को return किया जाता है |  और  4*3*2*fac(2-1) return होगा |

उसके बाद fac(1) को  call किया  जाता है इस function मे अगर (1>1 ) होगी तब num*fac(num-1)की value को return किया जाता है |  और   4*3*2*1  return होगा |

इसका आउटपुट होगा :

Enter value   : 4

Fctorial of 4 is 24

उदाहरन -2

इस उदाहरन मे 10 natural number के sum को calculate किया जाता है | इस उदहारण मे resursion function को use किया गया है | इसका source code निन्म होता है |

#include<iostream.h>

#include<conio.h>

#include<math.h>

int sum ( int );

void main()

{

int a ;

cout<<“Enter value   : “;

cin>>a;

cout<<“Sum of”<<a<<“is”<<fac(a);

getch();

}

int sum( int f )

{

if(f>1)

{

return f+sum(f-1);

}

else

{

return 1;

}

}

इस उदाहरन मे सबसे पहले यूजर द्वारा value को input किया जाता है | इस value को  variable ‘a’ को assign किया जाता है | suppose यूजर द्वारा input की value 5 है तब

sum() मे ,

सबसे पहले condition check की जाती है | (4>1 ) होगी तब num+sum(num-1)की value को return किया जाता है | अतः यह पर 4+sum(4-1) return होता है |

उसके बाद sum(3) को call किया जाता है इस function मे अगर (3>1 ) होगी तब num+sum(num-1)की value को return किया जाता है |  और  4+3+sum(3-1) return होगा |

उसके बाद sum(2)को call किया जाता है इस function मे अगर (2>1) होगी तब num+sum(num-1)की value को return किया जाता है |  और  4+3+2+sum(2-1) return होगा |

उसके बाद sum(1) को  call किया  जाता है इस function मे अगर (1>1 ) होगी तब num+sum(num-1)की value को return किया जाता है |  और   4+3+2+1  return होगा |

इसका आउटपुट होगा :

Enter value   : 4

Sum of 4 is 10

Call by reference

किसी function मे argument data type से pass किया जाता है इस प्रकार in variable के address से data variable को function मे pass किया जाता है  | इसे call by reference कहते है | इस function call statement मे  variable के address को pass किया जाता है |  और function defition मे प्पोइंटर variable मे function मे pass किये variable address से initial किया गया है | इसका उदाहरन निन्म होता है |

#include<iostream.h>

#include<conio.h>

#include<math.h>

void sub(int* , int* );

void main()

{

static int a,b ;

cout<<“Enter value 1  : “;

cin>>a;

cout<<“Enter value2 : “;

cin>>b;

int output = add(&a,&b);

cout<<” Addition  output of a+b :”<<output<<endl;

}

getch();

}

void add(int *e  ,int *f )

{

int c= *e + *f ;

return c;

}

इस उदाहरन मे , variable ‘a’ और ‘b’ के address को function calling मे pass किया जाता है | और function definition मे पोइंत्येर variable ‘e’ और ‘f’ मे  initial किया जाता है | |

इसके अलावा return statement मे भी variable के address को भी return किया जता है |

इस article मे recursion function और call by reference को discuss किया गया है |