2012-04-24 48 views
1

我的問題是我有一個函數如下:
遞歸超過一個值,但存儲列表沿途

def myfunc(a): 
    b=[] 
    b.append(a) 
    return myfunc(a-1), b* 

* =我知道這會打破我的功能
是否有任何可能的方式來允許b用我使用的a值更新,同時使我的功能繼續運行?問題所屬的代碼是最大值。 proble。所以我有一個權重和值的列表,以及一個最大值。允許的重量。我的函數發現最大沒有問題,但我想看看我用什麼值來達到那裏。即w = [1,2,3] v = [4,7,2] 最大權重= 3,最大val = 11。我希望我的函數在版本中顯示列表,如使用的權重= [ 1,2]和使用的值= [4,7]。很抱歉沒有發佈實際的代碼,該網站不允許它。

+0

如果您想了解如何很好地設置您的帖子的格式,請查看[格式指南](http://stackoverflow.com/editing-help)。另外,如果您有要顯示的代碼,請再次編輯您的問題並添加它,如果需要,我們可以正確格式化它。 – 2012-04-24 03:56:54

回答

0

你的意思是,這樣的事情?

def myfunc(a): 
    if a == 0: 
     return [a] 
    return myfunc(a-1) + [a] 

myfunc(5) 

> [0, 1, 2, 3, 4, 5] 
+0

種。無論如何要格式化它看起來更像我上面的內容。我正在努力解決的問題要複雜得多,而且沿着這條線將會更有幫助。基本上能夠返回一個我專門用於存儲的列表,以及一個值,在這種情況下,我將用它來遞歸。如果沒有,我會嘗試和這個玩。 – user1352683 2012-04-24 02:59:58

+1

究竟應該從myfunc()返回什麼?當然,這是一個二值元組,其中第二個元素是一個列表,但第一個元素是什麼?在這個問題的遞歸是不明確的,它甚至沒有一個基本情況 – 2012-04-24 03:09:22

+0

我的道歉,因爲我不知道這個很好的術語。但是,這個網站不允許我發佈的實際代碼是最大的問題。所以我基本上每次都會返回一個最大值(值1,值2)。我的基本情況是2個列表,權重和值,以及最大值。重量int。我試圖返回多個數據列表。 I.E.當前體重使用列表,價值嘗試列表,當前最大列表等。抱歉,缺少清晰度。 – user1352683 2012-04-24 03:26:01

2

我建議使用默認參數。

def myfunc(a, lst=None): 
    if lst is None: 
     lst = [] 
    lst.append(a) 
    if a > 0: 
     myfunc(a-1, lst) 
    return lst 

print(myfunc(5)) # prints: [5, 4, 3, 2, 1, 0] 
+0

這其實很有幫助,我不敢相信我前幾次錯過了這個選項 – user1352683 2012-04-24 04:14:12