亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用遞歸函數輸出斐波那契模式中具有交替負數的第 N 個數字

使用遞歸函數輸出斐波那契模式中具有交替負數的第 N 個數字

四季花海 2023-10-13 14:47:08
我正在嘗試使用 Java 解決遞歸函數練習問題,但它讓我完全難住了:Given the small integer n (0 <= n <= 40) you need to find the n-th number of the alternating Fibonacci sequence.The sequence starts with 0, 1, -1, 2, -3, 5, -8, 13, -21, ...So, fib(0) = 0, fib(1) = 1 => fib(2) = -1.我可以實現查找第 N 個斐波那契數的函數,但是具體的問題要求卻讓我失敗了。每當我嘗試實現某種負數時,它最終都會搞砸算術而不是改變輸出的最終數字。我的思緒不斷回到創建某種僅在最頂層框架上觸發的條件,但我不認為這是可以實現的。有誰知道如何解決這個問題?這是我的基本函數,沒有實現任何類型的負數要求:    public static long fib(long n){        if (n == 0){            return 0;        } else if (n == 1){            return 1;        } else if (n == 2){            return 1;        } else {            return fib(n-2)+fib(n-1);        }    }
查看完整描述

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)(為奇數,因此為正)。


查看完整回答
反對 回復 2023-10-13
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

也許現在把這個作為答案還為時不晚:


    public static long fib(long n){

        if (n <= 1){

            return n;

        } else {

            return fib(n-2) - fib(n-1);

        }

    }



查看完整回答
反對 回復 2023-10-13
?
至尊寶的傳說

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;

}


查看完整回答
反對 回復 2023-10-13
?
陪伴而非守候

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


查看完整回答
反對 回復 2023-10-13
  • 4 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號