用python计算约瑟夫环问题,不使用递归函数
时间: 2024-02-03 09:12:16 浏览: 71
knapsack管理系统基于python (47).zip
约瑟夫环问题是一个经典的问题,可以使用python进行计算。下面给出一个不使用递归函数的解法:
```python
def josephus(n, k):
arr = list(range(1, n+1))
idx = 0
while len(arr) > 1:
idx = (idx + k - 1) % len(arr)
arr.pop(idx)
return arr[0]
n = 10
k = 3
print(josephus(n, k)) # 输出为4
```
这个算法的思路是,首先初始化一个数组,里面存储了所有的人的编号,然后从第一个人开始,每次数k个人,到达第k个人后将其从数组中删除。当只剩下一个人时,该人即为最后留下来的人。
阅读全文