Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion 递归获取斐波那契数索引_Recursion_Fibonacci - Fatal编程技术网

Recursion 递归获取斐波那契数索引

Recursion 递归获取斐波那契数索引,recursion,fibonacci,Recursion,Fibonacci,我需要一个递归函数,它可以得到传递给它的斐波那契数的索引 例如,当我们通过8时,所提到的函数应该返回6;或者当我们超过21时,它应该返回8 任何帮助都将不胜感激。 谢谢 这是我的解决方案 它运行良好,并返回我所期望的 确保a和b在函数声明中有自己的默认值 int getTermIndex(int, int&, int=1, int=1); 功能实现: int getTermIndex(int number, int& i, int a, int b) { if(num

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

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

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

这是我的解决方案
它运行良好,并返回我所期望的
确保ab在函数声明中有自己的默认值

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);
函数用法:

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);

是的,你试过什么?虽然这的确是真的,但这是一个非常有趣的问题谢谢你的指导!我很快会更新这个问题。很好,我会留意的。祝你好运,我期待着看到进步!另外,如果你自己找到答案,也可以发布你自己的答案。干得好!我撤回了投票决定结束投票。如果您对进一步阅读感兴趣,有一个(非递归)版本。虽然在语法上是递归的,但在语义上这是一个迭代过程。实际上,在有尾部调用的语言中,优化只是一个循环。您的代码甚至依赖于此,因为在最后的
else
子句中没有
return
语句。