私のJavaプログラミングクラスでは、いくつかの再帰的メソッドを実装するラボの割り当て(ポイントはありません)があります。私は与えられた再帰関数に基づいて再帰的方法を完了し、残りの部分について必要な階乗再帰的方法を完了しました。これは現在、私の頭を包み込むのに苦労しているシグマシリーズです。 、このシグマ表記を再帰的メソッドとして「アンロール」するには
s(n) = sigma[(s(n - i) - 1)/i!, i = 1, n] and s(0) = 0
と私は(1)(5)(私が行くように私の答えを確認するために私のグラフ電卓を使用して)-s Sの結果を書いた:
は、私たちは、この式を与えています私はこの再帰的プロセスを正しく実装する方法を理解するのが難しいです。
私は自分の知る限りで適切に動作する「シグマ」メソッドを構築しています。したがって、私は「フォーミュラ」メソッドに問題があると思います。最悪の場合、数式は正しく(私の思う限り)正しくなり、コードは現在無限ループに陥っています。
// ... Rest of code omitted for brevity
private static double sequence2(int i) {
if (i <= 0) { return 0; }
return (sequence2(max - i) - 1)/factorial(i); // max is defined in other code
}
private static double sigma(int n) {
if (n <= 0) { return 0; }
return sequence2(n) + sigma(n - 1);
}
private static int factorial(int n) {
if (n <= 1) { return 1; }
return n * factorial(n - 1);
}
この再帰的シーケンスを正しくアンロールする方法はどこから始めるべきですか?
'max'とは何ですか?また、階乗の乗算を除算に変更する理由は何ですか? – nullpointer
それは分裂であると考えられています、それは私の元の公式の公式の誤りです。 'max'は、再帰的メソッドを呼び出す前に検証されるユーザ定義int(min = 1)です。 – studioKeywi
とは何ですか?私は何ですか、あなたは 'max-i'があなたに何を与えると思いますか? – nullpointer