我寫了一個程序來計算斐波那契數,並且它工作正常。然後我改變了程序,給了我斐波那契數65536模數,我所有的輸出都變成了零。什麼地方出了錯?添加模數函數後,所有輸出爲零
import time
def fib_matrix_timed(min):
timeout = time.time() + 60*min
A = [0, 1]
i = 1
while time.time() < timeout:
try:
B = A
A[0] = B[1]
A[1] = ((B[0] + B[1])%65536)
print A[0]
i+=1
except OverflowError:
print "fib_iterative overflows at ", i
print A[0]
print "fib_matrix calculated ", i, "iterations in", min, "minute(s)"
fib_matrix_timed(1)
在循環中打印'B'而不是'A [0]'顯示:[0,1]', '[1,2]', '[2,4]', '[4 ,[8,16]', '[16,32]', '[32,64]', '[64,128]', '[128,256]', '[256,512]', '[512,1024]', '[1024,2048]', '[2048,4096]', '[4096,8192]', '[8192, 16384]', '[16384,32768]', '[32768,0]', '[0,0]',當然從那裏打印出0。這與B中的列表是對A中列表的引用,而不是列表的單獨副本。 –