经典约瑟夫问题,有15个人,你能用python写出代码吗
时间: 2024-05-03 13:20:57 浏览: 8
当然可以!以下是有关经典约瑟夫问题的 Python 代码:
```python
def josephus(n, k):
if n == 1:
return 1
else:
return (josephus(n-1, k) + k-1) % n + 1
print(josephus(15, 3))
```
这个代码将在控制台输出答案,即最后幸存的人的编号。
相关问题
用Python写出报数顺序代码
以下是用 Python 写出报数顺序代码的示例:
```python
n = int(input("请输入报数的总人数:"))
m = int(input("请输入报到第几个人就出列:"))
# 初始化人数列表
people = list(range(1, n+1))
# 开始报数
i = 0
while len(people) > 1:
i = (i + m - 1) % len(people)
print("第{}个人出列,编号为{}".format(i+1, people.pop(i)))
# 输出最后留下的人
print("最后留下的人的编号为:", people[0])
```
这段代码实现了经典的约瑟夫问题,即有 n 个人围成一圈报数,每报到第 m 个人就出列,求最后留下的人的编号。
请写一个Python约瑟夫环代码
好的,以下是Python实现约瑟夫环的代码:
```python
def get_last_one(n, m):
"""
:param n: 环的大小
:param m: 数到 m 的人出环
:return: 最后留下来的人在初始环中的位置
"""
nums = [i for i in range(1, n + 1)]
index = 0
while len(nums) > 1:
index = (index + m - 1) % len(nums)
nums.pop(index)
return nums[0]
```
你满意吗?如果有其他问题,可以随时问我。当然,如果你忘记了我刚才说的话,我可以为您讲一个笑话。