0 Daumen
542 Aufrufe

Ich schreibe am Dienstag eine Klausur über Programmierung (Java) und verstehe nur Bahnhof.

Gibt es hier vielleicht jemanden, der helfen kann?

1. Ich habe folgendes Programm:

int drei (int a, int b) {
int i=1; j=0;
do (i=i*a; j=j*b; a--)
while a>0;
return i+j;
}

Welchen Wert liefert drei(2,2)?

Ich weiß, dass 6 rauskommen muss. Aber ich weiß nicht, wie man darauf kommt....


2. Ich habe folgendes Programm:

void vier() {
if (i>1) vier(i-1);
System.out.println(i);
if (i>2) vier(i-2);
System.out.println(i);
}

Welche Ausgabe liefert vier(3)? Es soll 11223113 rauskommen, aber ich komme einfach nicht auf diese Ausgabe....

Kann mir das vielleicht jemand Schritt für Schritt aufschreiben?

Avatar von

1 Antwort

0 Daumen

Hier ein paar Hinweise zur Aufgabe 1:

int drei (int a, int b) {
int i=1; j=0;
do (i=i*a; j=j*b; a--)
while a>0;
    return i+j;
}

Du übergibst an die Funktion die beiden Zweien: drei(2,2) und erhältst im 1. Durchlauf:

int drei (a=2, b=2) {
  int i=1; j=0;
  do (
     i=i*2;
     j=j*2;
     2--)   // 2-- heißt 2-1 = 1 (a wird um 1 vermindert beim nächsten Durchgang)
  while 2-1>0;  // führe die do-Schleife aus, solange a > 0 ist, a ist hier 1, da 2-- gerechnet wurde
    return i+j;  // returned wird erst, wenn die do-while verlassen wurde, im nächsten Durchlauf!
}

Ergänzung zu i und j: Du weißt zu Beginn sind i=1 und j=0, werden jedoch auch verändert:

int drei (a=2, b=2) {
  int i=1; j=0;
  do (
     i=1*2;  // i = 2 nach dem 1. Durchlauf
     j=0*2;  // j = 0 nach dem 1. Durchlauf
     2--)
  while 2-1>0; 
    return i+j;
}

2. Durchlauf: Jetzt ist nur noch die do-while zu betrachten, mit i = 2 und j = 0, nunmehr ist a = 1:

do (
     i=2*1;  // i = 2 nach dem 2. Durchlauf
     j=0*2;  // j = 0 nach dem 2. Durchlauf
     1--)
  while 1-1>0;   // 1-1 = 0 und 0 ist nicht größer als 0, die Bedingung wird nicht mehr erfüllt, verlasse Schleife!
    return 2+0;  // wirft 2 zurück
}

Am besten du gibst dir bei jedem Durchlauf die Werte über die Console aus. Du erhältst dann:

i=2 j=0 a=1 b=2
i=2 j=0 a=0 b=2
result = 2
Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community