#include <stdio.h>
#include <stdbool.h>
#include <string.h>
int fn(int );
int fib(int n);
int main(){
printf("%d\n", fn(5));
printf("%d\n", fib(5));
return 0;
}
//递归求n!和斐波那契数列
//递归把原始问题转换成属性相同,但是规模较小的问题.
// 递归带来了空间复杂度问题
int fn(int n){//求阶乘
if(n==1)
return 1;
else
return n * fn(n - 1);
}
int fib(int n){//求斐波那契数列
if(n==0)
return 0;
else if (n==1)
return 1;
else
return fib(n - 1) + fib(n - 2);//在这里fib(n-2)被重复计算了多次,这也是递归效率不高的原因
}