0
我正在編寫計算Josephus數的代碼。我只是試着用數字來獲得正確的代碼。這是我寫的代碼:這個用於查找Josephus數字的C代碼是如何工作的?
int answer(int n, int k) {
if (n == 0) {
return 0;
} else {
return (answer(n - 1, k) + k + 1) % n + 1;
}
}
這是正確的(我始終保持k = 0
),但現在我不知道爲什麼。
我試着手動跟蹤它,但沒有得到相同的答案。
這是我怎麼想它的工作原理:
answer(2,0)
=>((answer(1,0))+1)%3
=>((((answer(0,0))+1)%2)+1)%3
=>((1%2)+1)%3
=>(1+1)%3
=>2
。
但是,答案是1
。
有人能解釋一下嗎?
其1,因爲1%1 = 0。我現在明白了吧。謝謝!! :D – San
是完全正確的。別客氣 ! –