用c语言的递归算法实现不从1开始的约瑟夫环
时间: 2023-05-19 10:03:27 浏览: 118
用C语言实现约瑟夫环问题
好的,以下是用 C 语言的递归算法实现不从 1 开始的约瑟夫环的代码:
```c
#include <stdio.h>
int josephus(int n, int k, int m) {
if (n == 1) {
return k;
}
int pos = (k + m - 2) % n + 1;
return josephus(n - 1, pos, m);
}
int main() {
int n, k, m;
printf("请输入总人数n、起始位置k和报数m:");
scanf("%d %d %d", &n, &k, &m);
printf("最后留下的人的编号为:%d\n", josephus(n, k, m));
return 0;
}
```
这个算法的思路是,每次找到要删除的人的位置,然后递归调用函数,直到只剩下一个人为止。其中,pos 表示当前要删除的人的位置,n 表示当前还剩下的人数,k 表示起始位置,m 表示报数的数量。
阅读全文