#include<iostream>
using namespace std;
int sum (int n)
{
static int sum2=0;
if (n>0)
{
sum2+=n;
sum(n-1);
}
return sum2;
}
int main()
{
cout << sum(5);
return 0;
}
#include<iostream>
using namespace std;
int sum (int n)
{
if (n==0)
return 0;
else
return n + sum(n-1);
}
int main()
{
cout << sum(5);
return 0;
}
#include<iostream>
using namespace std;
int factorial (int n)
{
if (n==0)
return 1;
else
return n*factorial(n-1);
}
int main()
{
cout << factorial(5);
return 0;
}
#include<iostream>
using namespace std;
int power (int m, int n)
{
if (n==0)
return 1;
else
return power(m, n-1)*m;
}
int main()
{
cout << power(5, 2);
return 0;
}
#include<iostream>
using namespace std;
int power (int m, int n)
{
if (n==0)
return 1;
else if (n%2==0)
return power(m*m, n/2);
else
return power(m, n-1)*m;
}
int main()
{
cout << power(10, 3);
return 0;
}
#include<iostream>
using namespace std;
double e(int x, int n)
{
static double p=1, f=1;
double r;
if(n==0)
return 1;
else
{
r = e(x, n-1);
p=p*x;
f=f*n;
return r + p/f;
}
}
int main()
{
cout << e(4, 50);
return 0;
}
#include<iostream>
using namespace std;
double e(int x, int n)
{
static double r = 1;
if(n==0)
return 1;
else
{
r = 1 + (r*x)/n;
e(x, n-1);
return r;
}
}
int main()
{
cout << e(4, 60);
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int n=60;
int x=4;
double sum = 1;
double calc=1;
for (int i=1; i <=n; i++)
{
calc = (double)x/i*calc;
sum += calc;
}
cout << sum;
return 0;
}
#include<iostream>
using namespace std;
int fib(int n)
{
if (n==0)
return 0;
else if (n==1)
return 1;
else
{
return fib (n-2) + fib (n-1);
}
}
int main()
{
cout << fib(7) << " ";
return 0;
}
Storing the results of different function calls so as to reduce the number of function call is called memoization :
#include <stdio.h>
int F[10];
int mfib(int n)
{
if (n <= 1)
{
F[n] = n;
return n;
}
else
{
if (F[n - 2] == -1)
F[n - 2] = mfib(n - 2);
if (F[n - 1] == -1)
F[n - 1] = mfib(n - 1);
F[n] = F[n - 2] + F[n - 1];
return F[n - 2] + F[n - 1];
}
}
int main()
{
int i;
for (i = 0; i < 10; i++)
F[i] = -1;
printf("%d \n", mfib(7));
return 0;
}
#include<iostream>
using namespace std;
int ncr(int n, int r)
{
if (r==0 || n==r)
return 1;
else
{
return ncr(n-1, r-1) + ncr(n-1, r);
}
}
int main()
{
cout << ncr(4, 2);
return 0;
}
#include<iostream>
using namespace std;
int fact(int n)
{
if (n==0 || n== 1)
return 1;
else
{
return n*fact(n-1);
}
}
int ncr(int n, int r)
{
return fact(n)/(fact(r)*fact(n-r));
}
int main()
{
cout << ncr(4, 2);
return 0;
}
#include<iostream>
using namespace std;
int TOH(int n, int A, int B, int C)
{
if(n>0)
{
TOH(n-1, A, C, B); //A C B
printf("%d to %d\n", A, C );
TOH(n-1, B, A, C);
}
}
int main()
{
TOH(3, 1,2,3);
return 0;
}