def index(L,v)
''' Return index of value v in L '''
pass
我需要使用遞歸實現此功能的幫助。 真的很新的遞歸的東西,所以任何建議將幫助。使用遞歸找到列表中元素的索引
請注意,L
是一個列表。 v
是一個值。
def index(L,v)
''' Return index of value v in L '''
pass
我需要使用遞歸實現此功能的幫助。 真的很新的遞歸的東西,所以任何建議將幫助。使用遞歸找到列表中元素的索引
請注意,L
是一個列表。 v
是一個值。
我認爲這是作業。
所以你需要了解遞歸。這裏有一個例子:
def countdown(n):
if n == 0:
print "Hello World!"
else:
print n
countdown(n-1)
你需要從一個起點開始,在你的情況下它可能是第0個元素。
您需要一個終點,它應該是length - 1
或者當您找到該元素時。
簡單的,如果其他人應該在這裏做,與上述倒計時的修改版本。
L = [1, 2, 3, 4, 5, 6, 7, 11, 13]
def index(L, v):
if len(L) == 0:
return -1000000
elif L[0] == v:
return 0
else:
return 1 + index(L[1:], v)
print index(L, 7)
print index(L, 13)
print index(L, 100)
*遠程解釋器重新初始化*
-999991
假設0索引,下面的代碼將返回,如果它的元素的索引存在,如果不包含在列表中,則爲-1:
def index(L, v):
if L == []:
return -1
elif L[0] == v:
return 0
rv = index(L[1:], v)
if rv < 0:
return rv
return rv + 1
這裏一尾遞歸版本的它:但
def indexof(elem, list_):
return indexof_tailrec(elem, list_, 0)
def indexof_tailrec(elem, list_, index):
if index >= len(list_):
return None
if list_[index] == elem:
return index
return indexof_tailrec(elem, list_, index + 1)
注意的是,Python沒有尾調用優化的(至少不是隻要我知道)。
它是你的功課嗎? – JBernardo
你到目前爲止有什麼? – sth
這不是一項家庭作業。星期四我有一個即將到來的期中。這是練習之一。 我有這樣的事情 高清指數(L,V): 如果L [0] ==五: 返回0 其他: 回報指數(L [1:],V) (這是假設那個v已經在列表中了,那麼它就行不通了!) 原來我一直只是缺少一個(+ 1):( SIGH我希望我能更好地理解遞歸! – s4kur402