Hallo, liebes Forum!
Es ist mehr ein Problem der Informatik und Algorithmik als ein javaspezifisches.
Es geht um folgende Funktion:
Die erste Aufgabe besteht darin, eine Methode zu schreiben, die die Anzahl der Aufrufe von g() in Abhängigkeit von a und n zurückzugeben. Die zweite darin, das gleiche mit h() zu errechnen und zurückzugeben. Die Methoden wurden wie folgt implementiert und sind auch fehlerfrei:
Hier ist zu beachten, dass die Aufwände der Berechnungen nie größer als O(n) sein dürfen.
Die letzte Aufgabe verlangt, dass man errechnet, wie oft jede einzelne Zeile der Funktion f() durchgelaufen wird. Allerdings besteht das Problem darin, dass die Funktion, mit der man das errechnen darf, nur die Werte 'gCount' und 'hCount' als Parameter nimmt.
Zeile 0, 4, 10 und 11 bekommen die Zahl 0.
Zeile 1 wird immer aufgerufen, wenn auch h() aufgerufen wird und einmal beim ersten Durchlauf, also: hCount + 1
Zeilen 2 und 3 = gCount;
Zeile 5 = hCount - gCount +1;
Zeile 7 = Zeile 8 = Zeile 9 = hCount;
Die Frage ist jetzt, wie oft Zeile 6 aufgerufen wird (wie oft der Vergleich durchgeführt wird). Ich habe keinen Schimmer, wie ich das errechnen soll. Ich weiß nicht mal, ob das nur anhand von hCount und gCount möglich ist. Weiß irgendjemand weiter?
Es ist mehr ein Problem der Informatik und Algorithmik als ein javaspezifisches.
Es geht um folgende Funktion:
Java:
public static void f(int[] a, int n) { //0
if (n < 0) { //1
g(); //2
return; //3
} //4
int j = 0; //5
while (j < a[n]) { //6
h(); //7
f(a, n - 1); //8
++j; //9
} //10
} //11
Java:
public static long countG(int a[], int n) {
/* TODO a) */
if(n>=a.length)return-2;
long gCount = 1;
for(int i=0; i<=n; i++){
gCount *= a[i];
if(gCount < 0)
return -1;
}
return gCount;
}
public static long countH(int a[], int n) {
/* TODO b) */
if(n>=a.length)return-2;
long hCount = 0;
for(int i=0; i<=n; i++){
hCount = hCount * a[i] + a[i];
if(hCount < 0)
return -1;
}
return hCount;
}
Die letzte Aufgabe verlangt, dass man errechnet, wie oft jede einzelne Zeile der Funktion f() durchgelaufen wird. Allerdings besteht das Problem darin, dass die Funktion, mit der man das errechnen darf, nur die Werte 'gCount' und 'hCount' als Parameter nimmt.
Zeile 0, 4, 10 und 11 bekommen die Zahl 0.
Zeile 1 wird immer aufgerufen, wenn auch h() aufgerufen wird und einmal beim ersten Durchlauf, also: hCount + 1
Zeilen 2 und 3 = gCount;
Zeile 5 = hCount - gCount +1;
Zeile 7 = Zeile 8 = Zeile 9 = hCount;
Die Frage ist jetzt, wie oft Zeile 6 aufgerufen wird (wie oft der Vergleich durchgeführt wird). Ich habe keinen Schimmer, wie ich das errechnen soll. Ich weiß nicht mal, ob das nur anhand von hCount und gCount möglich ist. Weiß irgendjemand weiter?