用数学归纳法推导出递推公式:
设有n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。令f[i]表示i个人时最后胜利者的编号,则有递推公式:
f[1]=0;
f[i]=(f[i-1]+m)%i; (i>1)
通过递推公式即可求得f[n]。
function LastRemaining_Solution(n, m)
{
// write code here
if(n == 0){
return -1;
}
if(n == 1){
return 0;
}else{
return (LastRemaining_Solution(n - 1, m) + m) % n;
}
}