【发布时间】:2018-06-30 04:41:28
【问题描述】:
我正在尝试计算 ??????????模数??? (fibonacci modulo m) 使用这两个函数。第一个输入返回结果,而第二个输入返回 None。我真的很困惑这有什么问题:
def get_period(n,m):
# calculate period of m using fibonacci series
modular_list=[]
for idx,element in enumerate(fib_series(n)[0]):
modular_list.append(element%m)
for i in range(len(modular_list)-1):
if modular_list[i]==0 and modular_list[i+1]==1:
if i>1:
period = idx-1
modular_list_period = modular_list[:-2]
return(period, modular_list_period)
else:
continue
def fib_series(n):
lst = [0,1]
for i in range(n):
if n>=1:
lst.append(lst[-1]+lst[-2])
else:
return 0
return lst[:-1], lst[-2]
print(get_period(2015,3)) # returns -> (8, [0, 1, 1, 2, 0, 2, 2, 1])
print(get_period(239,1000)) # returns -> None
【问题讨论】:
-
当您看到这种情况发生时,并且您在某处没有
return None,这意味着您的函数正在完成而没有明确的return(所有循环都结束了,您永远不会满意if您将返回的条件)。 -
它没有发生,因为你是第二次执行它;但是因为它是以您定义它的方式执行的。用它迭代,你会找到原因。
标签: python recursion fibonacci