我能够为所有大于 0 的数字编写递归斐波那契函数,但该函数对于任何负数都是完全不正确的。知道如何在 C++ 中实现它吗?
int fibonacci(int n){
if(n == 0)return 0;
if(n == 1)return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
最佳答案
根据维基百科,http://en.wikipedia.org/wiki/Generalizations_of_Fibonacci_numbers ,负数的递归函数不同于正数。
对于积极的:
n_2 = n_1 + n_0
对于否定:
n_-2 = n_-1 - n_0
这样递归就可以“以相反的方式”工作,而相同的代码将无法工作。您将不得不编写一个新函数。
编辑:维基百科提供了概括:F_-n = (-1)^n F_n 所以只需计算 F_n 并用 (-1)^n 修改符号
关于c++ - 递归斐波那契函数(带负数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25858498/