4 回答

TA貢獻1825條經驗 獲得超6個贊
您可以簡單地使用另一個函數來處理負面要求:
public static int AlternatingFiboonacci(int n){
if(n > 0 && n % 2 == 0) return -fib(n); //if n is even and greater than 0
else return fib(n);
}
如果您需要一個單一的工作功能,這應該可以完成工作
public static int fib(int n){
if(n < 2) return n;
if(n % 2 == 0) return -1 * (fib(n - 1) - fib(n - 2));
else return (-1 * fib(n - 1)) + fib(n - 2);
}
這個函數的作用是:
當
n
為偶數時,返回fib(n - 1)
(為奇數,因此為正)-fib(n - 2)
(為偶數,因此為負)。減法將是一個正值,乘以 -1。當
n
為奇數時,返回 -1 *fib(n - 1)
(為偶數,因此為負)+fib(n - 2)
(為奇數,因此為正)。

TA貢獻1942條經驗 獲得超3個贊
也許現在把這個作為答案還為時不晚:
public static long fib(long n){
if (n <= 1){
return n;
} else {
return fib(n-2) - fib(n-1);
}
}

TA貢獻1789條經驗 獲得超10個贊
您可以先獲取您的號碼:
public static long fib(long n) {
if ((n == 0) || (n == 1))
return n;
else
return fib(n - 1) + fib(n - 2);
}
然后根據需要添加減號:
public long result(long n){
long fib = fib(n);
if(n>0 && n%2==0) return -fib;
else return fib;
}

TA貢獻1757條經驗 獲得超8個贊
想想這個公式。
您想要正常的斐波那契數列,但在偶數位置上它們為負數。假設您的方法將被命名為 altFib。如果您應用Math.abs( altFib(n) ),您將獲得第 n 個斐波那契數的實際值,因此很明顯,下面的代碼也會產生第 n 個斐波那契數:
int fib_n = Math.abs( altFib(n-1) ) + Math.abs( altFib( n-2 ) )
然后你希望它在偶數位置上為負,所以只需使用簡單的 if else :
if( n % 2 == 0 )
return -fib_n
else
return fib_n
添加回答
舉報