题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
#include<iostream>
using namespace std;
long long fibonacci(unsigned int n)
{
if(n < 2)
return n;
long long fibNminus1 = 0;
long long fibNminus2 = 1;
long long fibN = 0;
for (int i=2; i <= n; i++)
{
fibN = fibNminus1 + fibNminus2;
fibNminus1 = fibNminus2;
fibNminus2 = fibN;
}
return fibN;
}
// ====================测试代码====================
void Test(int n, int expected)
{
if(fibonacci(n) == expected){
printf("Test for %d in solution1 passed.\n", n);
}
else
printf("Test for %d in solution1 failed.\n", n);
}
int main(int argc, char* argv[])
{
Test(0, 0);
Test(1, 1);
Test(2, 1);
Test(3, 2);
Test(4, 3);
Test(5, 5);
Test(6, 8);
Test(7, 13);
Test(8, 21);
Test(9, 34);
Test(10, 55);
Test(40, 102334155);
return 0;
}
青蛙跳台阶问题,就是改初始值,f(1)=1,f(2)=2就OK了