递归计算斐波那契数列,公式是我百度来的。
**公式:f(n) = f(n - 1) + f(n - 2)**。
**仅供有需要的人以参考,如有错误请纠正我**
递归:
#include<iostream>
int f(int n)
{
static int count = 0;
count++;
std::cout << count << std::endl;
if (n == 0)
return 0;
else if (n == 1)
return 1;
else
return f(n - 1) + f(n - 2);
}
int main()
{
std::cout << f(3) << std::endl;
return 0;
}
非递归函数:
#include<iostream>
long f(int n)
{
unsigned long t1 = 0;
unsigned long t2 = 0;
unsigned long t3 = 0;
if (n == 1)
return 1;
for (int i = 0; i < n; i++)
{
if (i == 1)
{
t1 = t2 = t3 = 1;
}
else
{
t1 = t2 + t3;
t3 = t2;
t2 = t1;
}
}
return t1;
}
int main()
{
std::cout << f(10) << std::endl;
return 0;
}