1.定义是递归的
- 有很多数学函数是递归定义的,如大家熟悉的阶乘函数和二阶斐波拉切数列
2.用分治法求解该问题的算法描述
- 阶乘问题
int fact(int n)
{
if (n == 0)
{
return 1;
}
else
{
return n*fact(n - 1);
}
}
- 二阶斐波拉切数列
int fibolacci(int n)
{
if (n == 0)
{
return 0;
}
else if (n == 1)
{
return 1;
}
else if (n > 1)
{
return fibolacci(n - 1) + fibolacci(n - 2);
}
}
3.代码实现
- 阶乘问题
#include <stdio.h>
#include <stdlib.h>
int fact(int n)
{
if (n == 0)
{
return 1;
}
else
{
return n*fact(n - 1);
}
}
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("fact(%d)=%d\n", i, fact(i));
}
system("pause");
return 0;
}
- 运行结果
- 二阶斐波拉切数列
#include <stdio.h>
#include <stdlib.h>
int fibolacci(int n)
{
if (n == 0)
{
return 0;
}
else if (n == 1)
{
return 1;
}
else if (n > 1)
{
return fibolacci(n - 1) + fibolacci(n - 2);
}
}
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("fibolacci(%d)=%d\n", i, fibolacci(i));
}
system("pause");
return 0;
}
- 运行结果