代码之家  ›  专栏  ›  技术社区  ›  HoseinGhanbari

递归获取斐波那契数索引

  •  1
  • HoseinGhanbari  · 技术社区  · 7 年前

    我需要一个 递归函数 这可以得到传递给它的斐波那契数的索引。

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

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   HoseinGhanbari    7 年前

    这是我的解决方案!
    它运行良好,并返回我期望的结果。
    确保 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);