Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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
Java 递归乘法Fibonacci序列的问题_Java_Algorithm_Recursion_Fibonacci_Multiplication - Fatal编程技术网

Java 递归乘法Fibonacci序列的问题

Java 递归乘法Fibonacci序列的问题,java,algorithm,recursion,fibonacci,multiplication,Java,Algorithm,Recursion,Fibonacci,Multiplication,我正在写一个递归方法,它将计算乘法斐波那契序列。该序列类似于常规斐波那契序列,不同之处在于,不是将前面的两个数字相加,而是将它们相乘。我目前已经编写了这个方法,但是该方法没有返回我认为正确的结果,而是返回0,不管输入的数字是什么。任何帮助或想法都将不胜感激。 方法如下: public static int fibonacciPower(int n) { if(n < 2) { return n; } else { re

我正在写一个递归方法,它将计算乘法斐波那契序列。该序列类似于常规斐波那契序列,不同之处在于,不是将前面的两个数字相加,而是将它们相乘。我目前已经编写了这个方法,但是该方法没有返回我认为正确的结果,而是返回0,不管输入的数字是什么。任何帮助或想法都将不胜感激。 方法如下:

public static int fibonacciPower(int n)
{
    if(n < 2)
    {
        return n;
    }
    else
    {
        return (fibonacciPower(n-1) * fibonacciPower(n-2));
    }

}
publicstaticintfibonaccipower(intn)
{
if(n<2)
{
返回n;
}
其他的
{
返回(fibonacciPower(n-1)*fibonacciPower(n-2));
}
}
您需要返回1

if(n < 2)
{
    return 1;
}
if(n<2)
{
返回1;
}

这是因为,如果n变为0,则最终乘以0,然后乘积变为0。因此,在n等于0或1的情况下,我们用1相乘。请注意,斐波那契是一种算法,一般来说,递归是一种非常可怕的实现。你在哪里调用该方法?什么值?@Servy-tail递归对我来说很好…@Theolodis Fib(5)计算Fib(4)和Fib(3)。Fib(4)计算Fib(3)(再次)和Fib(2)。Fib(3)(运行两次)计算Fib(2)(同时计算Fib(4)和Fib(3)中的两次)。我希望你能明白。它实际上把一个O(n)操作变成了一个O(2^n)操作。也就是说,除非缓存所有以前计算的值,但如果这样做,内存占用将从O(1)(使用迭代解决方案)变为O(n)。这称为尾部递归……除此之外,斐波那契的正式定义只是将Fib(0)定义为1。@Theolodis好,它将是1,1,1,1,1,它不会从零开始,但这只是定义的算法的正确结果。如果0是1,1是1,而其他所有内容都是前两个值的乘积,那么除了1之外,您永远不会得到任何其他内容。因此,您可以使用
return1替换该方法如果你愿意的话。看起来有人在疯狂地投票。@AnkitRustagi不太喜欢。其中有几个是我的,因为那些人显然误解了这个问题。有些是别人的though@informatik01我以前从未听说过这样一个函数,而且考虑到它不会返回任何有用的东西,我对此一点也不感到惊讶。