递归:
(1)直接或间接的调用自身的算法
(2)使用函数自身给出的定义
1. 阶乘
循环实现阶乘
时间复杂度:O(n)
空间复杂度:S(1)
int fun(int n)
{
int sum = 1;
for(int i = 1; i <= n; ++i)
{
sum = sum * i;
if(sum < 0) return -1;
}
return sum;
}
递归实现阶乘
时间复杂度:O(2^n)
空间复杂度:S(n)
int fan(int n)
{
if(n <= 1)
return 1;
else
return fan(n - 1) * n;
}
2. 斐波那契数列
递归实现斐波那契数列
时间复杂度:O(2^n)
空间复杂度:S(n)
int fun1(int n)
{
if(n <= 2)
return 1;
if(n > 2)
return fun1(n - 1) + fun1(n - 2);
}
循环实现斐波那契数列</