Rekursion - Return-Problem

Neue Frage »

Auf diesen Beitrag antworten »
Tina92 Rekursion - Return-Problem

Meine Frage:
Hallo :-)

Ich habe den nachfolgenden Code geschrieben, verstehe aber nicht, warum mir mein return immer das Ergebnis der Addition liefert? Ich hätte gerne die beiden Ergebnisse nebeneinander (oder untereinander) stehen.

Vielen Dank :-)

Meine Ideen:
Der Code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:

package rekursiv;

public class rekursiv 
{
    public static void main(String[] args) 
    {
        System.out.println(rekursivFakultät(255));
    }
    
    public static int rekursivFakultät (int n)
    {
        int zahl1 = n; 
        int zahl2 = n+10; 
        
        return zahl1 + zahl2; 
    }
}




 
Auf diesen Beitrag antworten »
eulerscheZahl

Die Funktion ist weder rekursiv, noch berechnet sie eine Fakultät.

Der Rückgabewert der Funktion ist int, also eine einzige Ganzzahl.

Zitat:
die beiden Ergebnisse

Was ist denn das andere Ergebnis?
Auf diesen Beitrag antworten »
Tina92

Entschuldige bitte, da habe ich totalen Mist gebaut. Hier der richtige Code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:

package rekursiv;

public class rekursiv 
{
    public static void main(String[] args) 
    {
        System.out.println(rekursivFakultät(5));
    }
    
    public static int rekursivFakultät (int n)
    {
        int result = 1; 
        
        if (n>0)
        {
            result *=n;
            return rekursivFakultät(n-1) + result;
        }
        else return 1; 
    }
}




Anstatt 120 für die Fakultät bekomme ich aber 16 als Ergebnis. Meiner Meinung nach muss der Fehelr beim return irgendwo liegen.
Auf diesen Beitrag antworten »
eulerscheZahl

Mache beim return das Plus zum Mal, dann passt es.
 
Auf diesen Beitrag antworten »
Tina92

Ich check's nicht; Das hatte ich gestern versucht, dann ging es nicht traurig

Eine Frage noch:

Ich habe zum Beispiel einen primitiven Datentypen float mit dem Namen gewicht = 5.2F und ein weiteres float gewicht2 = 2.4F;

Ich möchte beide Werte zurückgeben:

return gewicht + gewicht2 addiert mir aber die Werte. Wie schaffe ich es, dass mir beide Werte zurückgegeben werden ohne Addition?


Vielen Dank
Auf diesen Beitrag antworten »
eulerscheZahl

Der übliche Weg wäre, zwei Funktionen getGewicht() und getGewicht2() zu schreiben. Wenn du wirklich mehrere Rückgabewerte haben willst, brauchst du irgendeine Form von Datensammlung (Array, eigene Klasse, ...), kannst das auch als object zurückgeben, wenn du willst.
Auf diesen Beitrag antworten »
Tina92

Alles klar, danke dir für deine Hilfe :-)
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »