遞迴思路很簡單。遞迴演算法就像開啟乙個資料夾,資料夾裡面有另外乙個資料夾,當資料夾下沒有資料夾了就返回
本題有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 ...