2017-06-07 1 views
-3

Ich muss eine Funktion schreiben, um ein Produkt von arithmetischen Progressionselementen (mit Rekursion) zu finden. Ich habe nur vage Vorstellung davon, wie es zu tun - etwa so:Wie finde ich Produkt der arithmetischen Progression?

public static int product(int n) 
{ 
    if (n == 0) 
     return 0; 
    else 
     return <some code> * product(n-1); 
} 

Könnten Sie zumindest mir einen Tip geben?

+0

@Jamiec Dies wird keine arithmetische Progression sein, auch wenn '' ist 'n'. Es wird in diesem Fall faktoriell sein. –

+0

@ Jamiec: und das ist es? – LAL

+0

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

Antwort

0

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.

+0

Jetzt scheint es ziemlich klar für mich. Danke für die Erklärung. – LAL

0

Sie müssen eine Funktion schreiben, die 3 Argumente zuerst Begriff (f), gemeinsame Differenz (d) und Gesamtzahl der Begriffe (n) in AP.

 int fun(int f,int d,int n){ 
     if(n==0) return 1; 
else (f+(n-1)*d) * fun(f,d,n--); 
    } 
+0

verwenden Sie eine undefinierte 'a' Variable in Ihrem Ich denke, das sollte für Ihre Variablen so schrecklich benannt sein ist es schwer, aber sicher. ;-) – Chris

Verwandte Themen