2012-02-21 41 views
2

這是我的函數,重要的一行是我再次調用f()的地方。函數調用不正確的值

def f(num,xyz,possible,temp): 
    y = num%9 
    x = num-y 
    print num 
    for xyz[num] in possible[num]: 
     if ispossibility(temp,xyz[num],x,y) == True: 
      temp[num] = xyz[num] 
      if num != 80: 
       f(num+1,xyz,possible,temp) # i call f() with num incremented 
      else: 
       print 'yes' 
       exit() 

的程序的輸出是

0 
1 
2 
3 
4 
5 
6 
7 
8 
3 
2 
3 
3 

的問題是,無論何時函數f()被調用時,變量num應始終通過1但是,從輸出中,f(遞增)以num的形式被調用爲3,此前爲8。所以我想知道如何可能(輸出應該是9 btw,而不是3),當f()總是調用w/num增加1.我一直在看這個函數一段時間,現在我真的不明白髮生了什麼事。

+1

什麼是參數的初始值。換句話說:你最初的電話是怎樣的?它是'f(0,...,...,...)'代替'...'的位置嗎?另外:請給我們「可能性」功能。 – Tadeck 2012-02-21 05:54:58

+2

可能[num]中的xyz [num]行是'''打算做什麼?我不確定我以前曾見過這種情況。 – DSM 2012-02-21 05:55:55

+0

DSM我正在嘗試製作一個數獨解算器,所以可能的話,它們各自的盒子都有可能的數字。所以它看起來像這樣= [[1,2],[2,4,2] ...]等等,直到可能[80],這有可能爲最後一個盒子。在看我的代碼後,我相信使用xyz [num]不是必需的,因爲我正在調用一個函數,所以變量本來就是本地的。但是如果你不明白xyz [num]是用來嘗試所有可能的方塊排列的話。我想我現在知道一個更好/更容易理解的方式。所以謝謝帝斯曼 – bab 2012-02-21 19:12:59

回答

4

您可以在迴路內呼叫f(num+1, ...),因此可以多次調用f(),其值爲num