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