已采納回答 / 木子小7
遞歸的性能是很低,因為會有大量重復計算的過程。但是可以提高性能。你把已經(jīng)遞歸的值存放到字典里,需要用時取之。這樣你輸入1000都不會死機。<...code...>
2020-02-26
#1. 判斷x行是否有皇后
for i in range(0, y):
if board[x][i] == 1:
return False
這里判斷x行是否有皇后,其實可以省略這一步驟,在put_queen方法里對step行遍歷的時候,即使step行前面的元素有放過皇后,在遞歸完成時也已經(jīng)恢復了現(xiàn)場,所以在判斷(x,y)位置是否可以放皇后時,x行內(nèi)y位置之前也不會出現(xiàn)皇后
for i in range(0, y):
if board[x][i] == 1:
return False
這里判斷x行是否有皇后,其實可以省略這一步驟,在put_queen方法里對step行遍歷的時候,即使step行前面的元素有放過皇后,在遞歸完成時也已經(jīng)恢復了現(xiàn)場,所以在判斷(x,y)位置是否可以放皇后時,x行內(nèi)y位置之前也不會出現(xiàn)皇后
2020-02-18
import functools
@functools.lru_cache(None)
def fib(n):
if n<2:
return n
return fib(n-1)+fib(n-2)
可以試下這個裝飾器
@functools.lru_cache(None)
def fib(n):
if n<2:
return n
return fib(n-1)+fib(n-2)
可以試下這個裝飾器
2020-02-14
最新回答 / weixin_慕移動8336811
注意arranges.pop()或者說pop()這個函數(shù)只會彈出數(shù)組的最后一個元素,也就是說會去掉你選的(遞歸開始的地方)上一個元素。所以遞歸完成后不一定是空列表。比如[1,2,3]? #1設(shè)置現(xiàn)場 arrange = [1,2] #2.遞歸 next_datas = [3], 這一步也就只有一個元素可選,直接一種可能[1,2,3] ,#3 恢復現(xiàn)場 arrange = [1],繼續(xù)設(shè)置下一個現(xiàn)場為[1,3]....
2020-01-22
已采納回答 / bobby
這里return的目的是讓函數(shù)返回不執(zhí)行后續(xù)的邏輯,代碼里面如果if和else后面都沒有邏輯的話 可以不寫。因為沒有后續(xù)邏輯的代碼可執(zhí)行函數(shù)也會默認返回的
2020-01-16
第五個月的數(shù)量老師算錯了吧,應該是10只。也就是說這個問題還是斐波那契數(shù)列問題中的 f(n) = f(n-1) + f(n-2)的情況,而不是 f(n) = f(n-1) + f(n-3)的情況。
2019-12-16