【发布时间】:2018-05-26 18:54:59
【问题描述】:
这不是我的代码。我不明白第 3 行到底在做什么,逻辑操作。
cache = {}
def fiba(n):
cache[n] = cache.get(n, 0) or (n <= 1 and 1 or fiba(n-1) + fiba(n-2))
return cache[n]
n = 0
x = 0
while fiba(x) <= 4000000:
if not fiba(x) % 2: n = n + fiba(x)
x=x+1
print(n)
【问题讨论】:
-
我希望编写该代码的人的编程许可证被吊销。
-
x and y与x if x else y相同。这能解释清楚吗? -
x if x else y表示如果 x 或/和 y 评估为 true,则 x 评估为 true? -
@bfontaine 不,不是。如果
x为假或如果x和y都为假,x and y or z可以评估为z。
标签: python python-3.x recursion fibonacci