怎么描述一个算法的优劣呢
使用斐波那契数列
的 递归
和非递归算法进行讨论.
斐波那契数列
的结构是这样: ,即如图所示 算法
相应算法(c语言)
int recursion_fibonacci(int n) {
if (n == 0)return 1;
if (n == 1)return 1;
return recursion_fibonacci(n - 1) + recursion_fibonacci(n - 2);
}
复制代码
void nonrecursion_fibonacci(int n) {
int Fn = 1, Fn_1 = 1, Fn_2 = 1;
if(n>2)
{
for(int i = 2;i<=n;i++)
{
Fn = Fn_1 + Fn_2;
Fn_2 = Fn_1;
Fn_1 = Fn;
}
}
printf("数值是%d", Fn);
}
复制代码
#include <stdio.h>
#include <time.h>
int recursion_fibonacci(int n) {
if (n == 0)return 1;
if (n == 1)return 1;
return recursion_fibonacci(n - 1) + recursion_fibonacci(n - 2);
}
int nonrecursion_fibonacci(int n) {
int Fn = 1, Fn_1 = 1, Fn_2 = 1;
if(n>2)
{
for(int i = 2;i<=n;i++)
{
Fn = Fn_1 + Fn_2;
Fn_2 = Fn_1;
Fn_1 = Fn;
}
}
printf("数值是%d", Fn);
}
int main(void) {
clock_t start, end;
start = clock();
printf("数值是%d", recursion_fibonacci(5));
nonrecursion_fibonacci(5);
end = clock();
printf("执行速度%6.3fs", (double)(end-start)/ CLOCKS_PER_SEC);
return 0;
}
复制代码
函数 | 时间复杂度 | 空间复杂度 |
---|---|---|
recursion | ![]() |
![]() |
nonrecursion | ![]() |
![]() |