Ich hab ein Problem u. komme nicht weiter. folgendes ist die aufgabe:
Eine Methode soll das Minimum eines Felds berechnen. Vorgabe für die Methode: int minimum(int []a, int n)
An diese soll ich mich halten. d.h. ich muss der Methode ein Feld als parameter übergeben sowie ein int n, welches der Länge des Feldes entspricht. Soweit so gut.
Die Methode soll in zwei Varianten geschrieben werden: einmal einen primitiv-rekursiven Algo und einmal einen endrekursiven Algo.
Mein Problem: Ich bekomme es nicht hin obwohl ich es jetzt schon mehrere Mal probiert hab und inzwischen nur noch Knoten im Kopf hab. Ich habe Rekursionen bereits genutzt um Fakultät zu berechnen und verstehe das (zumindest bilde ich es mir ein) auch. Aber das Array macht mir hier große Probleme:
Dann dachte ich mir: okay, implementiere es erst mal iterativ und versuche es dann umzuwandeln: Aber ich bekomme es nicht hin. Ich will keine Lösung haben, da ich gerne selbst drauf kommen würde, aber einige hilfreiche Antworten mit Tipps wäre mir sehr hilfreich und ich wär dankbar:
Hier meine iterative Lösung:
public static int minimum(int[] a, int n) {
int minimum=a[n-1];
for (int i = a.length-1; i > 0; i--){
if (a[i-1] < a){minimum = a[i-1];}
}
return minimum;
}
//hier zwei Versuche der rekursiven Implementierung - erfolglos an was liegt es?
// return (a[n-2]<a[n-1]) ? minimum(a, n-1): a[n-2];
//return (a[n-2] < a[n-1] && n !=0) ? a[n-2]: minimum(a, n-1);
public static void main(String[] args) {
int array[] = { 5, 3, 1, 6, 8, 6 };
int n = array.length;
System.out.println(minimum(array, n));
}
Ich habe mich dann (weil ich völlig an meinem Verstand zweifelte an einer rekursiven implementierung einer Methode zur Ausgabe der x.ten Fibonaccizahl versucht. Das Ergebniss...:
public static int fib(int a) {
return (a == 0) ? 0 : (a == 1) ? 1 : fib(a - 2) + fib(a - 1);
}
...lief auch problemlos. Ich stehe glaub ich bei der o.g. Aufgabe völlig auf dem Schlauch und bin um jeden Tipp dankbar.
lg Stuppi
Eine Methode soll das Minimum eines Felds berechnen. Vorgabe für die Methode: int minimum(int []a, int n)
An diese soll ich mich halten. d.h. ich muss der Methode ein Feld als parameter übergeben sowie ein int n, welches der Länge des Feldes entspricht. Soweit so gut.
Die Methode soll in zwei Varianten geschrieben werden: einmal einen primitiv-rekursiven Algo und einmal einen endrekursiven Algo.
Mein Problem: Ich bekomme es nicht hin obwohl ich es jetzt schon mehrere Mal probiert hab und inzwischen nur noch Knoten im Kopf hab. Ich habe Rekursionen bereits genutzt um Fakultät zu berechnen und verstehe das (zumindest bilde ich es mir ein) auch. Aber das Array macht mir hier große Probleme:
Dann dachte ich mir: okay, implementiere es erst mal iterativ und versuche es dann umzuwandeln: Aber ich bekomme es nicht hin. Ich will keine Lösung haben, da ich gerne selbst drauf kommen würde, aber einige hilfreiche Antworten mit Tipps wäre mir sehr hilfreich und ich wär dankbar:
Hier meine iterative Lösung:
public static int minimum(int[] a, int n) {
int minimum=a[n-1];
for (int i = a.length-1; i > 0; i--){
if (a[i-1] < a){minimum = a[i-1];}
}
return minimum;
}
//hier zwei Versuche der rekursiven Implementierung - erfolglos an was liegt es?
// return (a[n-2]<a[n-1]) ? minimum(a, n-1): a[n-2];
//return (a[n-2] < a[n-1] && n !=0) ? a[n-2]: minimum(a, n-1);
public static void main(String[] args) {
int array[] = { 5, 3, 1, 6, 8, 6 };
int n = array.length;
System.out.println(minimum(array, n));
}
Ich habe mich dann (weil ich völlig an meinem Verstand zweifelte an einer rekursiven implementierung einer Methode zur Ausgabe der x.ten Fibonaccizahl versucht. Das Ergebniss...:
public static int fib(int a) {
return (a == 0) ? 0 : (a == 1) ? 1 : fib(a - 2) + fib(a - 1);
}
...lief auch problemlos. Ich stehe glaub ich bei der o.g. Aufgabe völlig auf dem Schlauch und bin um jeden Tipp dankbar.
lg Stuppi