【发布时间】:2014-01-02 11:40:58
【问题描述】:
我正在查看这个 stackoverflow 问题:Game of 2/9 (Interview at Facebook)
在其中一个答案中指出,通过与递归解决方案进行比较,可以找到此算法:
def win29(n):
if n<=9: return True
n-=1
while n>=18:
n = n//18
return n==1 or 4<=n<=8
我猜递归算法应该是这个:
F(i, j) = true; if (2^i * 9^j * 9) >= N
!(F(i+1, j) && F(i, j+1)); otherwise
将这种递归算法转换为上述迭代算法的机制或过程(或比较)是什么?
【问题讨论】:
-
你的递归算法和上面的算法不一样。
-
当你调用 F(0,0) 和 n=N 时,它似乎也是一样的。根据我给出的链接,至少它似乎应该给出相同的答案。
-
说我笨,但是这种伪代码风格真的让我很困惑。这是任何标准,还是事实上的标准。我的意思是
n = n//18...或if n<=9: return True,但在后一个代码示例中F(i, j) = true; if ...。见鬼? -
请看一下我引用的问题。我认为两者的语言(或伪代码)不同。但是很容易理解每种算法的作用。
标签: algorithm