primzahlenRekursiv
と呼ばれる再帰関数で素数を計算したいが、私はistPrimzahl
のStackOverflowException
を得て、現在の数が素数であるかどうかをチェックする。素数再帰的なStackOverflowException
static void Main(string[] args)
{
primzahlenRekursiv(2);
}
static void primzahlenRekursiv(int primzahl)
{
if (istPrimzahl(primzahl, 2)) { Console.Writeline(primzahl); }
primzahlenRekursiv(primzahl + 1);
}
static bool istPrimzahl(int primzahl, int zahl)
{
if (primzahl % zahl != 0) { istPrimzahl(primzahl, zahl + 1); }
if (primzahl == zahl) { return true; }
return false;
}
最初に注意する:あなたは結果を使用して 'istPrimzahl'とされていない呼び出しているすべての時間は、それはバグです... –
あなたは、これは発生しません宇宙のすべての素数を見つけたいです。あなたの再帰の終わりはどこですか? – mybirthname
通常、再帰関数が自身を呼び出すとき、それは独自の正確なパラメータ値ではなく、新しいパラメータ値を子呼び出しに渡します。さもなければ、子コールは、親コールがしなかったことをどのようにして行いますか? –