递归获得斐波那契数字索引

时间:2017-11-23 15:14:51

标签: recursion fibonacci

我需要一个递归函数,它可以获取传递给它的Fibonacci数的索引。

例如,当我们通过8时,提到的函数应返回6;或者当我们通过21时它应该返回8.

任何帮助将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:2)

这是我的解决方案!
它工作正常,并返回我期望的。
确保 a b 在函数声明中有自己的默认值。

int getTermIndex(int, int&, int=1, int=1);

功能实施:

int getTermIndex(int number, int& i, int a, int b) {

    if(number==0) return i;
    else if(number==1){
        i++;
        return i;
    }

    int nextFib = a+b;

    if(nextFib==number || nextFib>number) {
        i += 3;
        return i;
    }
    else {
        i++;
        getTermIndex(number, i, b, nextFib);
    }

}

功能用法:

int number;
cin >> number;

int nth=0;
getTermIndex(number, nth);