Bitte um Erklärung der Programmschritte

Suntronic

Mitglied
Hallo,

ich habe folgenden Quellcode (aus einer Aufgabe):

Java:
public class Calc {
    private static int a  = 5;
    public static int calc(int x, int y){
        int erg = 0;
        if (x + y > 1){
            erg = erg + a * calc(x-1, y - 1);
            }
        else{
            erg = erg + y + a;
        }
        return erg;
      
    }
        public static void main(String [] args){
        int erg1 = calc(2,2);
        int erg2 = calc (0 , 0);
        System.out.println(erg1);
        System.out.println(erg2);
      
    }
  
}

Aufgabenstellung: Was wird in der Konsole ausgegeben?

Das erg2 kann ich mir noch erklären ---> kommt 5 raus.
Mit dem erg1 hab ich so meine Probleme die Rechenschritte nachzuvollziehen. (ich weiß dass 125 rauskommt, aber nicht warum)

Kann mir jemand helfen?

Dank und netten Gruß

Suntronic
 

Flown

Administrator
Mitarbeiter
Warum nimmst du dir nicht ein Stift und einen Zettel zur Hand und setzt die Werte ein und gehst es Schritt für Schritt durch? Wo liegt denn das eigentliche Problem
 

Suntronic

Mitglied
Ja da hast du recht.
Also das wird jetzt ein wenig schwierig aber ich probiere es mal:

calc(2,2) wird aufgerufen,
2+2 > 1 ----> erg = 0 + 5 * calc(1,1) (da x-1 , y-1)
erg = 0 + 5 * (0 + 5* calc(0,0))

da 0 + 0 < 1 kommt die else Anweisung zum Tragen --> erg = 0 + 0 + 5

Insgesamt also erg = 0 + 5*(0+5*(0+0+5))

Hoffe es ist einigermaßen verständlich o_O

Wünsche noch einen schönen Abend! :)
 

Neue Themen


Oben