Talk is cheap.
递归法 递归深度大,不推荐。
func lastRemaining(n int, m int) int {
if n <= 0 || m <= 0 {
return -1
}
if n == 1 {
return 0
}
return (lastRemaining(n - 1, m) + m) % n
}
循环迭代法
func lastRemaining(n int, m int) int {
if n <= 0 || m <= 0 {
return -1
}
last := 0
for i := 2; i < n + 1; i++ {
last = (last + m) % i
}
return last
}