この問題の解決には、再帰時に非常に悪いです。私はこれを行う方法を記述する必要があり: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を返します。入力3の場合、4が間違った結果であると思っていますか?あなたはそれから何を期待しましたか? –
あなた自身でこれをデバッグしようとしたことはありません。あなた自身のデバッグの努力を示していない限り、スタックオーバーフローはあなたのためのプログラムをデバッグしません。 https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ –