Rekursive formel in java(max number soll ausgegeben werden)?

2 Antworten

Der Ansatz ist gut es fehlt nur was. Du gehst zwar alle Zahlen durch aber du prüfst nicht ob es die höchste Zahl ist. Am besten übergibst du noch einen Wert, den nennst du max und in der if machst du noch vor das return if (input[pos] > max dann max = input[pos]



am ende dann return max und da sollte nicht 0 returnt werden

Ändere die Abfrage von >= auf >

Statt 0 gibst Du input[pos] zurück.

also es hat geklappt aber bitte sag mir wieso das so ist ich verstehe es nicht !!

0
@leonardomessi

Die erste Überlegung ist, was Du zurück geben muss, wenn dein Array nur ein Element hat (bzw. pos == 0). Dann ist das größte Element automatisch das Element selbst. Also ist die Abbruchbedingung der Rekursion pos == 0. Wenn das Array aus mehr als einem Element besteht, ist das Maximum rekursiv definiert, durch das Maximum aus dem aktuellen wert an der Stelle pos und dem Maximum aller Werte der vorherigen stellen.

static double rekursiveMax(double[] input, int pos) { 
if (pos > 0){
return Math.max(input[pos], rekursiveMax(input, pos - 1));
}
return input[pos];
}
2

Wie löse ich die Javaaufgabe für den goldenen Schnitt?

Hallo liebe Community,

ich habe folgendes Problem: Ich muss eine Javaaufgabe lösen, welche diesen mit konvergenz berechnet. Die vorgegeben Formel lautet wie folgt: g = 1 + 1/g = 1+1/1+1/g = ... Für g wird quasi immer 1+1/g eingesetzt. Mir wird ein Parameter übergeben, welcher bestimmt, wie oft die Abfolge berechnet werden soll. Bei meinem Programm kommt es aber immer wieder zu minimalsten Abweichungen bei der 3.-5. Nachkommastelle und ich weiß nicht wie ich diese Abweichungen beseitigen kann.

Hier noch der bisherige Code:

public class GoldenRatio {

    public static double result;
    public static double result2;
public static double calculate(int n) {
    
    if(n==0){
        return 0;
    }
    for(int i=0;i<=n;i++){
        result = 1+ 1/result;
    }
    return result;
}

}

Ich hoffe ihr könnt mir da irgendwie weiterhelfen.

Viele Grüße Dubsepp

...zur Frage

Wie in Java mit PQ-Formel und statischen Methoden rechnen?

Guten Abend miteinander, unzwar habe ich eine Aufgabe die zu lösen ist, wobei ich leider nicht weiter komme. Die PQ-Formel habe ich hingekriegt, was jedoch mit dem "Satz von Vieta" gemeint und wie dieser anzuwenden ist, ist mir unschlüssig.

Aufgabe: Das Problem für die Lösungsberechnung der Gleichung (x^2 −3 · 10^200 x+2 = 0) ist lösbar. (Die Lösungen lauten x1 ≈ 3 · 10200 und x2 ≈ 7 · 10−201, sind also in Java darstellbar.) Wie muss man vorgehen, damit sie in Java berechnet werden? Hilfreich dazu ist der „Satz von Vieta“, insbesondere die Beziehung x1x2 = q der zwei Lösungen zu q.

Das ist was ich bisher dafür hab:


public class Bonusaufgabe { public static String rechnePQFormel(double x, double p, double q){ double x1, x2, diskriminante; diskriminante = (p/2)(p/2)-q; if (diskriminante >= 0) { x1 = (-p/2) + Math.sqrt((p/2)(p/2)-q); x2 = (-p/2) - Math.sqrt((p/2)(p/2)-q); if (x1==x2) { return "Die Lösungsmenge der PQ-Formel ist L={"+x2+"}";
} else { return "Die Lösungsmenge der PQ-Formel ist L={"+x1+"; "+x2+"}"; } } else { return "Keine Lösung da die Diskriminante "+diskriminante+" ist!"; } // end of if-else } public static String rechneSatzVonVieta(double x, double p, double q){ x1 = -1
(p+q); x2 = p*q; }
public static void main(String[] args){

} }

PS. weiß leider nicht wie ich mein Programm hier schön einfügen kann, deshalb nochmal als Bild angehangen.

...zur Frage

Schriftliches Dividieren Rekursiv Programmieren?

Hi,

Kennt jemand einen Algorithmus um schriftliches Dividieren zu programmieren und das Ergebnis in einem Array zu speichern? (oder einfach gleich als Float / Double)

Direkt als Antwort, als Link oder auch nur ein Ansatz ist ausreichend

Danke

...zur Frage

Wie lerne ich Programmier-Basics?

Ich würde gerne mal ausprobieren zu programmieren, aber da es so viele verschiedene Sprachen gibt, bin ich etwas überfordert und weiß nicht direkt wo ich anfangen soll, vorallem weil ich zuerst noch die Basics lernen sollte. Wie kann ich das am besten machen? Oder soll ich gleich mit einer Sprache wie z.B Java beginnen? Gibt es dazu gute Youtube Kanäle oder Internet Seiten? Danke schonmal

...zur Frage

Java Anfang Fehlermeldung undkeine Lösung!

Servus, habe hier mal Code geschrieben (aus dem Buch ):

public class Factorial {

public static void main (String[] args)
{
    int input = Integer.parseInt(args[0]);
    double result = factorial(input);
    System.out.println(result);
}
public static double factorial (int x)
{
    if (x<0) //kleiner
    {
        return 0.0;
    }
    double fact = 1.0;
    while (x>1) //größer
    {
        fact = fact *x;
        x = x - 1;
    }
    return fact;
}

}

Der Fehler ist: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at Factorial.main(Factorial.java:5)

Laut deversen Forum Infos: -Ihr versucht, auf ein Array Feld zuzugreifen, was außerhalb der Größe des Arrays liegt. -Sucht in der angegeben Zeile nach dem Zugriff auf das Array und stellt fest, warum der Index zu groß geworden ist. -"Printline-Debugging" hilft (Index vor jedem Zugriff ausgeben)!

Doch ich kann das Problem nicht lösen....

Danke für eure Hilfe

...zur Frage

Was möchtest Du wissen?