所以,我试着看看我是否可以编写代码来解决Python中的约瑟夫斯问题(在圈子里(。
我是业余爱好者,所以请耐心等待。
这是我想出的代码,但它有一些问题。
n = input(int)
for i in range(0,10):
if 2**i < n:
print (2(n-(2**i))+1)
首先,它给出了一个TypeError,并说'int'和'str'的实例之间不支持'<'。
其次,如果我更换
n = input(int)
跟
n = 100
然后它给出 TypeError: 'int' 对象不可调用。
此外,我似乎无法理解如何让程序返回 n = 100(即 73(的真正解决方案,考虑到我使用了一个奇怪的 for 循环,它会为小于 n 的每个值返回解决方案,直到 2^10
打印行中缺少 *。 它应该是
print(2*(n-(2**i))+1)
根据您的代码,您正在调用一些 2(某物(,其中 int 不可调用。 您的解决方案也不完全正确。它不适用于完美的 2 次方。
查看此链接以获取不同的方法和证明