[erledigt] Wie viele Schleifendurchgaenge?
-
Hallo
ich hab folgenden Code:counter = 0; for (int a = -steps; a <= +steps; a++) for (int b = -steps; b <= +steps; b++) for (int c = -steps; c <= +steps; c++) // d, f, g, .... counter++;
Nun kann man counter ausrechnen:
counter = [(steps + 1) * 2 - 1] ** schleifen;schleifen ist dabei die Anzahl der for-Schleifen.
Was ist jetzt aber wenn bei 0 geskippt wird, also:
counter = 0; for (int a = -steps; a <= +steps; a++) if a == 0 continue; for (int b = -steps; b <= +steps; b++) if b == 0 continue; for (int c = -steps; c <= +steps; c++) if c == 0 continue; // d, f, g, .... counter++;
Wie kann man nun counter ausrechnen?
Hier eine kleine Tabelle fuer Beispielwerte fuer schleifen=5steps counter realcounter 1 243 32 2 3135 1024 3 16807 7776 4 59049 32768 5 161051 100000 6 371293 248832
-
na, #durchläufe^#schleifen
wenn du in jeder schleife von -steps bis steps läufst und 0 rauslässt, dann durchläufst du in jeder der schleife n = 2steps viele werte. bei m vielen schleifen macht das dann n^m:
(21)^5 = 32
(22)^5 = 1024
(23)^5 = 7776
...wenn du in jeder schleife von -steps bis steps läufst und 0 nicht rauslässt, dann durchläufst du in jeder der schleife n = 2steps+1 viele werte:
(21+1)^5 = 243
(22+1)^5 = 3135
(23+1)^5 = 16807
...
-
vielen dank