递归法
#include <iostream>
using namespace std;
int64_t Fib(int n)
{
if (n == 0)
return 0;
else if (n == 1)
return 1;
else
return Fib(n - 1) + Fib(n - 2);
}
int main(int argc, char const *argv[])
{
for (int i = 0; i < 100; i++)
{
cout << "Fib(" << i << ")"
<< "=" << Fib(i) << endl;
}
return 0;
}
分治法
#include <iostream>
using namespace std;
int64_t Fib(int n)
{
if(n == 0)
return 0;
if(n <= 2)
return 1;
int64_t first = 0;
int64_t second = 1;
while(0 < n--)
{
second += first;
first = second - first;
}
return first + second;
}
int main(int argc, char const *argv[])
{
for(int i =0; i< 50;i++)
{
cout << "Fib(" << i << ")=" << Fib(i) <<endl;
}
return 0;
}