计算fibonacci数(多种方法)
Posted P_langen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算fibonacci数(多种方法)相关的知识,希望对你有一定的参考价值。
#include <iostream> using namespace std; //计算fibonacci数 //方法一:二分递归法,时间复杂度为O(2^n),额外空间复杂度为常数 int RecursiveFibonacci(int n) { return (n < 2) ? n : RecursiveFibonacci(n - 1)+RecursiveFibonacci(n-2); } //方法二:线性递归,时间复杂度为O(n),空间复杂度为O(n) int LinearrecursionFibnoacci(int n,int& prev)//要用到引用,要不不可以!!!! { if (n == 0) { prev = 1; return 0; } else { int prevPrev; prev = LinearrecursionFibnoacci(n - 1, prevPrev); return prevPrev + prev; } } //方法三:迭代法,时间复杂度为O(n),空间复杂度为常数 int IterationFibonacci(int n) { int f = 1, g = 0; while (n--) { g += f; f = g - f; } return g; } int main() { int num_1,num_2,num_3; int f=0; num_1 = RecursiveFibonacci(24); num_2 = LinearrecursionFibnoacci(24, f); num_3 = IterationFibonacci(24); cout << num_1 << endl; cout << num_2 << endl; cout << num_3 << endl; return 0; }
以上是关于计算fibonacci数(多种方法)的主要内容,如果未能解决你的问题,请参考以下文章
如何为Fibonacci算法设计并行代码,但没有openmp任务?