4 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
您可以簡(jiǎn)單地使用另一個(gè)函數(shù)來(lái)處理負(fù)面要求:
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);
}
如果您需要一個(gè)單一的工作功能,這應(yīng)該可以完成工作
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);
}
這個(gè)函數(shù)的作用是:
當(dāng)
n
為偶數(shù)時(shí),返回fib(n - 1)
(為奇數(shù),因此為正)-fib(n - 2)
(為偶數(shù),因此為負(fù))。減法將是一個(gè)正值,乘以 -1。當(dāng)
n
為奇數(shù)時(shí),返回 -1 *fib(n - 1)
(為偶數(shù),因此為負(fù))+fib(n - 2)
(為奇數(shù),因此為正)。

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

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

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