使用Python遞迴操作實現關於某個面試題

2021-10-10 08:21:50 字數 1601 閱讀 2227

遞迴思路很簡單。遞迴演算法就像開啟乙個資料夾,資料夾裡面有另外乙個資料夾,當資料夾下沒有資料夾了就返回

本題有5個資料夾,那麼只需要開啟每乙個資料夾下面的資料夾,記錄已開啟資料夾所代表的值就行了,當值大於等於13就返回

遞迴函式內有三種情況:

1.元素和 su>13

2.元素和 su==13

3.元素和 su<13

前兩個為回歸的條件

n =13#

sum_set =

#存放和為13的組合存放列表

defremove_duplicate

(sum_list)

:#對sum_set進行排序,去重

new_set =

for i in sum_list:

i.sort(

) i =

list

(map

(int

, i)

) new_set =

list

(set([

tuple

(i)for i in new_set]))

return new_set

deffun

(li, su, n)

:#遞迴部分,li為列表,su為列表數值和,n為字串

if su == n:

#結束條件1

list

(n))

return su

elif su > n:

#結束條件2

return-1

else

:#所有可能性都加起來

return

( fun(li, su+

int(li[0]

), n+

'2')

+ fun(li, su+

int(li[1]

), n+

'3')

+ fun(li, su+

int(li[2]

), n+

'5')

+ fun(li, su+

int(li[3]

), n+

'7')

+ fun(li, su+

int(li[4]

), n+

'9')

)def

main()

: fun([2

,3,5

,7,9

],0,

'')#li為列表,su為列表數值和預設0,n為字串預設空

print

(remove_duplicate(sum_set)

)#去重

if __name__ ==

'__main__'

: main(

)

輸出

[(2, 2, 2, 7),

(2, 2, 2, 2, 5),

(2, 2, 3, 3, 3),

(2, 2, 9),

(2, 3, 3, 5),

(3, 5, 5),

(2, 2, 2, 2, 2, 3),

(3, 3, 7)]

以上為所有可能組合

使用Python遞迴實現全排列

1 確定兩個列表 2 乙個列表是用來存放需要全排列的數 3 另乙個列表是用來存放已經排列好的數 4 將上面兩個列表不斷進行遞迴 5 最後結果列表裡新增的是最後排列好的列表 import math import copy 定義全排列的函式 defpermutation need perm,alread...

python遞迴實現 遞迴演算法 python實現

在函式的定義中對這個函式自身的呼叫,就是遞迴。遞迴結構中,遞迴的部分必須比原來的整體簡單,才有可能到達某種終結點 出口 而且必須存在非遞迴的基本結構構成的部分,否則會無限遞迴。學習目標 程式設計實現斐波那契數列求值 f n f n 1 f n 2 程式設計實現求階乘 n 程式設計實現一組資料集合的全...

Python實現遞迴

def fact n if n 0 return 1 else return n fact n 1 def print num recursive n if n 0 print num recursive n 1 print n def print num recursive revserve n ...