需要此問題的幫助,我在遞歸方面非常糟糕。我需要編寫,做了此方法:在Java中遞歸地定義一個序列
輸入變量X爲1和50。該函數應返回爲Y通過遞歸定義的序列的第X個術語之間的整數:
f(1) = 1 f(2) = 3 f(X) = 2*f(X-1) – 2*f(X-2) for X = 3,4,5,...
你的功能代碼應該使用遞歸(不是循環)
TBH我甚至不知道從哪裏開始。任何幫助,將不勝感激。這裏是我當前的代碼:
package p1parta;
import java.util.Scanner;
public class RecursiveSeq
{
public static void main(String args[])
{
System.out.println("Please enter a number:");
Scanner input = new Scanner(System.in);
int x = input.nextInt();
System.out.println(sequence(x));
}
public static int sequence(int x)
{
if(x == 1){
return 1;
}
if (x == 2){
return 3;
}
return 2 * sequence(x - 1) - 2 * sequence(x - 2);
}
}
我試圖執行所示的解決方案,但輸出我從程序獲得不匹配什麼,我用手計算。事實上,只是測試輸入3,4,5和6唯一匹配的是5
從實施基本案例開始 - 「如果x是1,則返回1;如果是2,則返回3」。然後,執行遞歸步驟 - 「否則返回2 * f(X-1) - 2 * f(X-2)」。更重要的是,這個問題很廣泛,因爲它沒有告訴我們你遇到的哪些概念有問題。 – yshavit
列出你期望的和你得到的。例如,對於輸入3,該算法將返回2 * 3 - 2 * 1 = 4.您說你認爲4對於輸入3是錯誤的結果?那麼你期望什麼? –
似乎你沒有嘗試單獨進行調試。堆棧溢出不會爲你調試程序,除非你已經顯示出努力調試自己。 https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ –