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 किया गया है |