1樓:匿名使用者
def search(arr,v,):
if not arr:
return false
item,rest=arr[0],arr[1:]if isinstance(item,(list,tuple)):
return true if search(item,v) else search(rest,v)
return true if item==v else search(rest,v)
if __name__=='__main__':
arr=[1,[2,3],4,[5,[6,,[8,9],10]]]test_v=[100,1,5,6,20,100]for v in test_v:
print(v,search(arr,v))
2樓:匿名使用者
參考了 napo1987 的答案,其答案很有lisp的風格,在這個基礎上search1則更加傾向於python風格。而search2則可以識別某個元素(其本身可以是列表)是否存在於列表中
def search(arr,v):
if not arr:
return false
item,rest=arr[0],arr[1:]if isinstance(item,(list,tuple)):
return true if search(item,v) else search(rest,v)
if item==v:
return true
return search(rest,v)def search1(arr,v):
if type(arr) in (tuple,list):
for item in arr:
if search1(item,v):
return true
else:
if arr==v:
return true
return false
def search2(arr,v):
if arr==v:
return true
elif type(arr) in (tuple,list):
for item in arr:
if search2(item,v):
return true
return false
if __name__=='__main__':
arr=[1,[2,3],4,[5,[6,,[8,9],10]]]test_v=[100,1,5,6,20,100]for v in test_v:
print(v,search2(arr,v))v=[8,9]
print(v,search2(arr,v))
3樓:匿名使用者
最後一行列印(cal(eval(lis)))無法進入前提是錯誤的,形如[1,2,3,4]
python裡如何用遞迴法列出一個tree裡所有的枝幹? 15
4樓:山水阿銳
您好:perm函式輸出的是引數list從引數k位置開始,到引數m位置結束的全排列
def perm(list,k,m):
if k==m:
for i in range(m+1): # 遞迴的結束條件是k==m,在整個遞迴過程中引數m(即結束位置沒有改變),而引數k則每次遞迴+1
print list[i], # 輸出遞迴結束時的list狀態
else:
for i in range(k,m+1): # 該迴圈用來負責生成遞迴的下一個狀態
list[k],list[i]=list[i],list[k] # 將list的k位置與每一個位置i分別交換
perm(list,k+1,m) # 由於k位置與每一個位置i交換,也即k位置所有可能選值都已被窮舉,此時只需要繼續計算k+1之後的職位即可,因此以k+1為開始位置,結束位置m不變進入下一層遞迴
list[k],list[i]=list[i],list[k] # 由於list是引用傳遞,因此需要在位置交換之後重新交換,以保證list不變。
python如何無限遍歷字典中的value,在不知道字典裡面有幾層字典的時候 50
5樓:
遞迴。用這個函式把dict裡面的所有value用遞迴的方法提取到一個空list裡面
希望對你有幫助
請問python中類裡面的方法可以遞迴嗎?如果可以遞迴的話怎麼用?
6樓:匿名使用者
>>> class recursion:
... def method(self,n):
... if n==1:return 1... return n*self.method(n-1)
...>>> a=recursion()
>>> a.method(5)
120就像普通遞迴一樣版呼叫權
7樓:匿名使用者
遞迴bai求du
zhi1-i的平
dao方版和權
8樓:匿名使用者
完全可以啊,和函式一樣的寫法。只是多一個引數self
小白請教python的 巢狀for迴圈
9樓:匿名使用者
第一次執行第一條語句,x的值為-2,然後進入內迴圈。
執行第二條語句,z的值依次賦為1和-1,然後分別列印-21\n-2-1\n。(注意\n為換行符,python中每個print結束,系統自動加入一個換行符,如果print語句後面新增一個逗號:print x,z,,就不會列印換行符了)。
第二次執行第一條語句,x的值為0,然後進入內迴圈。
執行第二條語句,z的值依次賦為1和-1,然後分別列印01\n0-1\n。
第三次執行第一條語句,x的值為2,然後進入內迴圈。
執行第二條語句,z的值依次賦為1和-1,然後分別列印21\n2-1\n。
10樓:_晨曦子
外迴圈先提取一個資料x=-2,
然後轉入內迴圈,內循依次環提取資料z=1,輸出-2,1z=-1,輸出-2,-1
內迴圈完畢,再跳到外迴圈提取下一個資料x=0,接著轉入內迴圈,依次下去
java怎麼用遞迴方法來求1!2!3n
int sum 0,n,sub 1 for int i 1 i java,以遞迴方式計算1 2 3 10 的和 計算階乘 param i 要計算的數 return 階乘結果 public static long count long i 希望能幫助你 public int add int start...
python中timedelta方法怎麼用
usr bin python coding utf 8from datetime import datetime,timedelta timedelta代表兩個datetime之間的時間差 now datetime.now past past datetime 2010,11,12,13,14,15...
c語言用遞迴顛倒棧動態棧不知道怎麼遞迴
按照題意應該是一個 int i 1 用來給陣列需要賦值定位到具體儲存單元,此處從陣列第二開始賦值。下表0第一 int a 入棧單元用來臨時儲存資料 f n else f n 1 出棧是逆序儲存到儲存單元 此例為了方便,上面的是加了一個陣列。你可以直接使用一個陣列,使用對換的方法。僅供參考。如何設計遞...