#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TRUE (1)
#define FALSE (0)
typedef int Status;
int recursion_factorial(int n)
{
if (n == 1)
{
return 1;
}
else
{
return n * recursion_factorial(n-1);
}
}
int recursion_fibonacc(int pre, int curr, int n)
{
if (n < 0)
{
return -1;
}
if (n == 1)
{
return pre;
}
else if (n == 2)
{
return curr;
}
else
{
return recursion_fibonacc(curr, pre+curr, n - 1);
}
}
int recursion_yanghui_triangle(int at_x, int at_y)
{
if (at_y <= at_x && at_y >= 0)
{
if (at_y == 0 || at_x == at_y)
{
return 1;
}
else
{
return recursion_yanghui_triangle(at_x-1, at_y-1) + recursion_yanghui_triangle(at_x-1, at_y);
}
}
}
int recursion_search(int *array, int low, int high, int target)
{
if(low <= high)
{
int mid = (low+high) / 2;
if(array[mid] == target)
{
return mid+1;
}
else if (array[mid] > target)
{
return recursion_search(array, low, mid-1, target);
}
else
{
return recursion_search(array, mid+1, high, target);
}
}
return -1;
}
int main(int argc, char const *argv[])
{
int num_factorial = 0;
int num_fibonacc = 0;
int num_yanghui = 0;
int num_search = 0;
num_factorial = recursion_factorial(3);
num_fibonacc = recursion_fibonacc(1, 1, 6);
num_yanghui = recursion_yanghui_triangle(3, 2);
int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
num_search = recursion_search(array, 0, 9, 3);
printf("num_factorial=%d\n", num_factorial);
printf("num_fibonacc=%d\n", num_fibonacc);
printf("num_yanghui=%d\n", num_yanghui);
printf("num_search=%d\n", num_search);
return 0;
}