0 Daumen
126 Aufrufe

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

Gibt es hier vllt 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? Vielen Dank schonmal im Voraus.

Gefragt von

1 Antwort

0 Daumen

Auch wenn es sich nicht um eine Mathefrage handelt, können wir dir helfen. 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 2en: 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

Beantwortet von

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

0 Daumen
3 Antworten
+1 Punkt
1 Antwort

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community
...