Ich schrieb Code, der die Josephus-Nummer berechnet. Ich habe gerade mit den Zahlen experimentiert, um den Code richtig zu machen. Dies ist der Code, den ich schrieb:Wie funktioniert dieser C-Code zum Finden der Josephus-Nummer?
int answer(int n, int k) {
if (n == 0) {
return 0;
} else {
return (answer(n - 1, k) + k + 1) % n + 1;
}
}
Dieses korrekt ist (Ich halte k = 0
immer), aber jetzt weiß ich nicht, warum.
Ich habe versucht, es manuell zu verfolgen, aber nicht die gleiche Antwort erhalten. Diese
ist, wie ich denke, es funktioniert:
answer(2,0)
=>((answer(1,0))+1)%3
=>((((answer(0,0))+1)%2)+1)%3
=>((1%2)+1)%3
=>(1+1)%3
=>2
.
Die Antwort ist jedoch 1
.
Kann mir bitte jemand erklären?
Sein 1, weil 1% 1 = 0. ich es jetzt verstehen. Vielen Dank!! : D – San
yep total richtig. Bitte ! –