# Bitte um Erklärung der Programmschritte



## Suntronic (1. Mrz 2016)

Hallo,

ich habe folgenden Quellcode (aus einer Aufgabe):


```
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 (1. Mrz 2016)

Bitte deinen Code das nächste Mal in Code-Tags geben: [code=java]JAVA CODE HERE[/code]


----------



## Suntronic (1. Mrz 2016)

Flown hat gesagt.:


> Bitte deinen Code das nächste Mal in Code-Tags geben: [code=java]JAVA CODE HERE[/code]


Ohh entschuldigung...werde ich beim nächsten Mal machen. Kannst du mir vllt helfen?


----------



## Flown (1. Mrz 2016)

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 (1. Mrz 2016)

Das habe ich schon probiert, aber ich komme irgendwie nicht drauf. Bin wirklich am verzweifeln... Hab irgendwie nen Brett vorm Kopf


----------



## Suntronic (1. Mrz 2016)

Oha habs raus, ist mir gerade eingeleuchtet.

Sorry, dass ich euch behelligt habe. Tut mir leid.


----------



## Flown (1. Mrz 2016)

Poste doch die Lösung, falls wer anders das gleiche Problem hat.


----------



## Blender3D (1. Mrz 2016)

calc(0,0) = 5
calc(1,1)) = 5* calc(0,0);
calc(2,2) = 5* calc(1,1);
Hilft das ?


----------



## Suntronic (1. Mrz 2016)

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 

Wünsche noch einen schönen Abend!


----------

