C/Function/Function Recursive

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

A recursive power function

#include <stdio.h>
double power(double x, int n);
int main() {
  double x = 0.0;
  int n = 0;
  for(x = 2.0 ; x<= 5.0; x += 0.5)
    for(n = 0 ; n<5 ; n++)
      printf("%.2lf raised to the power %d = %.2lf\n", x, n, power(x,n));
}
/* Function to raise x to the power n.*/
double power(double x, int n) {
  if(n == 0)
    return 1.0;
  else
    return x * power( x , n - 1 );
}


Calculating factorials using recursion

#include <stdio.h>
long factorial(long);
void main()
{
  long number = 0;
  printf("\nEnter an integer value: ");
  scanf(" %ld", &number);
  printf("\nThe factorial of %ld is %ld\n", number, factorial(number));
}
/* recursive factorial function */
long factorial(long N)
{
  if( N < 2 )
    return N;
  else 
    return N*factorial(N - 1);
}


Copy string using recursion

  
#include <stdio.h>
void strcopy(char *s1, char *s2);
int main(void)
{
  char str[80];
  strcopy(str, "this is a test");
  printf(str);
  return 0;
}

void strcopy(char *s1, char *s2)
{
  if(*s2) { /* if not at end of s2 */
    *s1++ = *s2++;
    strcopy(s1, s2);
  }
  else *s1 = "\0"; /* null terminate the string */
}


Function: Recursive call

  
#include <stdio.h>
void f(int i);
int main(void)
{
  f( 0 );
  return 0;
}
void f(int i)
{
  if( i < 10) {
    f( i + 1 ); /* recursive call */
    printf("%d ", i);
  }
}


Prints out Fibonacci numbers

#include <stdio.h>
int main()
{
    int   old_number= 1;
    int   current_number = 1;
    int   next_number;
    while (current_number < 100) {
        printf("%d\n", current_number);
        next_number = current_number + old_number;
        old_number = current_number;
        current_number = next_number;
    }
    return (0);
}


Recursive function call

  
#include <stdio.h>
int add(int pk,int pm);
main() {
    
   int k = 2;
   int i;
   int m = 3;
   i = add(k,m);
   printf("i =  %d\n",i);
}
int add(int addk,int addm) {
    if(addm==0) 
        return(addk); 
    else 
        return(1+add(addk,addm-1));
}


Recursive function with static variable

#include <stdio.h>
void f(void);
int main(void)
{
  f();
  return 0;
}
void f(void)
{
  static int s = 0;
  s++;
  if(s == 10) 
      return;
  printf("%d ", s);
  f(); /* recursive call */
}