/*
Fibnacci Definition
Created by taotao man on 2015-10-28
brief: 一只青蛙一次可以跳上1级台阶,也可以跳上2级,求该青蛙跳上n级的台阶有多少种跳法?
// 修改记录:
date:
Add setA();
Change GetA();
*/
#include "stdfx.h"
//
#include <iostream>
using namespace std;
// ====================方法1:递归====================
long long Fibonacci_Solution1(unsigned int n)
{
if(n <= 0)
return 0;
if(n == 1)
return 1;
return Fibonacci_Solution1(n -1) + Fibonacci_Solution1(n - 2);
}
// ====================方法2:循环====================
long long Fibonacci_Solution2(unsigned int n)
{
int result[2] = {0, 1};
if(n < 2)
return result[n];
//
long long fibNMinusOne = 1;
long long fibNMinusTwo = 0;
long long fibN = 0;
for(unsigned int i = 2; i <= n; i++)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
}
// ====================测试代码====================
void Test(int n, int expected)
{
if(Fibonacci_Solution1(n) == expected)
printf("Test for %d in solution1 passed.\n", n);
else
printf("Test for %d in solution1 failed.\n", n);
//
if(Fibonacci_Solution2(n) == expected)
printf("Test for %d in solution2 passed.\n", n);
else
printf("Test for %d in solution2 failed.\n", n);
//
}
int _tmain(int argc, _TCHAR* argv[])
{
// Test(0, 0);
Test(6, 8);
//
system("pause");
return 0;
}
斐波那契数列(转载)
最新推荐文章于 2024-04-26 23:09:19 发布