递归版本:
int64_t CalcFibonacci(unsigned int destIdx) // 注意返回值类型
{
if (0 == destIdx) return 0;
if (1 == destIdx) return 1;
return CalcFibonacci(destIdx - 1) + CalcFibonacci(destIdx- 2);
}
循环版本:
int64_t CalcFibonacci(unsigned int destIdx) // 注意返回值类型
{
if (0 == destIdx) return 0;
if (1 == destIdx) return 1;
int64_t leftData = 0;
int64_t rightData = 1;
int64_t finalData = 0;
for (int idx = 2; idx <= destIdx; ++idx)
{
finalData = leftData + rightData;
leftData = rightData;
rightData = finalData;
}
return finalData;
}