C Tutorial/Function/Recursive Function

Материал из C\C++ эксперт
Перейти к: навигация, поиск

Calculate factorials using recursion

<source lang="cpp">#include <stdio.h> unsigned long factorial(unsigned long); int main(void) {

 unsigned long number = 0L;
 printf("\nEnter an integer value: ");
 scanf(" %lu", &number);
 printf("\nThe factorial of %lu is %lu\n", number, factorial(number));
 return 0;

} unsigned long factorial(unsigned long n) {

 if(n < 2L)
   return n;
 else
   return n*factorial(n - 1L);

}</source>

Recursion

  1. A recursive function is a function that calls itself.
  2. The speed of a recursive program is slower because of stack overheads.
  3. In recursive function we need to specify recursive conditions, terminating conditions, and recursive expressions.


<source lang="cpp">#include <stdio.h> int add(int k,int m); main() {

   int k ,i,m;
   m=2;
   k=3;
   i=add(k,m);
   printf("The value of addition is %d\n",i);

} int add(int pk,int pm) {

   if(pm==0)
      return(pk);
   else
      return(1+add(pk,pm-1));

}</source>

The value of addition is 5

Recursive fibonacci function

<source lang="cpp">#include <stdio.h> long fibonacci( long n ); int main() {

  long result; 
  long number; 
  printf( "Enter an integer: " );
  scanf( "%ld", &number );
  result = fibonacci( number );
  printf( "Fibonacci( %ld ) = %ld\n", number, result );
  
  return 0;

} long fibonacci( long n ) {

  if ( n == 0 || n == 1 ) {
     return n;
  } 
  else { 
     return fibonacci( n - 1 ) + fibonacci( n - 2 );
  } 
  

}</source>

Enter an integer: 3
Fibonacci( 3 ) = 2