Der folgende Code sollte es tun:
public static int Product(int arithInitial, int arithDifference, int n)
{
if (n == 1)
return GetArithmeticSeriesTerm(arithInitial,arithDifference,1);
else
return GetArithmeticSeriesTerm(arithInitial,arithDifference,n) * Product(arithInitial, arithDifference, n-1);
}
public static int GetArithmeticSeriesTerm(int initial, int difference, int position)
{
return initial+difference*(position-1);
}
ich eine neue Methode geschaffen, die Elemente der arithmetischen Reihe zu bekommen. Ich habe auch den Basisfall der Rekursion auf n = 1 geändert und dann den Aufruf auf den arithmetischen Serienbegriff gesetzt.
Es sollte hoffentlich ziemlich selbsterklärend sein, was es tut.
Für die ersten vier Glieder der Reihe 1,3,5,7, ... Sie es nennen würde als
int result = Product(1,2,4)`
Hinweis: Sie müssen nicht zwei Methoden dafür, aber ich fühle, dass Durch die Einführung der zweiten Methode wird klarer, was der Code tut. Sie könnten natürlich nur den Ausdruck inline und natürlich kann Ihr Basistelefon tatsächlich zu nur initial
vereinfacht werden, wenn Sie es ein bisschen sauberer machen wollten. Die Verwendung der vollständigen Methode macht es jedoch sehr intuitiv, warum wir das tun.
@Jamiec Dies wird keine arithmetische Progression sein, auch wenn '' ist 'n'. Es wird in diesem Fall faktoriell sein. –
@ Jamiec: und das ist es? – LAL
Was soll deine Funktion eigentlich tun? Mein erster Kommentar nahm an, dass Sie nur versucht haben, eine Sequenz zu multiplizieren (wie '3 * 2 * 1') – Jamiec