C++实现斐波那契数列 时间复杂度 空间复杂度

来源:互联网 发布:资源管理系统源码 编辑:程序博客网 时间:2024/05/25 08:13

斐波那契数列我写了四种实现方法:

第一种:递归实现

long long Fib(int n)//递归{if (n < 2){return n;}return Fib(n - 1) + Fib(n - 2);}
时间复杂度:O(2^n)

空间复杂度:O(n)

第二种:非递归实现

long long FibNouR(int n)//非递归{long long first = 0;long long second = 1;long long ret;if (n < 2){return n;}else{for (size_t i = 0; i < n; ++i){ret = first + second;first = second;second = ret;}return ret;}}
时间复杂度:O(n)

空间复杂度:O(1)

第三种:数组实现

long long*  FibArray(int n)//数组{long long* array = new long long[n + 1];array[0] = 0;if (n == 0)return array;array[1] = 1;for (size_t i = 2; i < n; ++i){array[i] = array[i - 1] + array[i - 2];}return array;}
时间复杂度:O(n)

空间复杂度:O(n)

第四种:数组的优化

long long FibN2(int n)//优化{long long fibarray[3] = { 0, 1, n };for (size_t i = 2; i < n; ++i){fibarray[2] = fibarray[1] + fibarray[0];fibarray[0] = fibarray[1];fibarray[1] = fibarray[2];}return fibarray[2];}
时间复杂度:O(n)

空间复杂度:O(1)

1 0
原创粉丝点击