2013-02-27 52 views
1

我做了一個迷宮尋路遞歸函數作爲作業,但我遇到了一個問題。我知道我已經做了一切正確的事情(通過調試),路徑正在被發現等。但是當所有的遞歸函數開始返回True時,原來的/第一個不是!我找不到讓它返回true的方法(遞歸調用是以「if,true」格式)。Python - 不能「結束」遞歸函數

我希望你們可以幫助我,對不起英語不好,因爲它不是我的母語。

*這裏有雲代碼:

def pathExists(labyrinth, currCoord, destination, previousRule, visited): 
    if currCoord == destination: 
     return True 
    if currCoord not in labyrinth: 
     print "False" 
     return False 

    rule = labyrinth[currCoord] 
    if rule == Any: 
     previousRule = rule 
     print currCoord 
     if (pathExists(labyrinth, (currCoord[0], currCoord[1] - 1), destination, rule, visited) or 
      pathExists(labyrinth, (currCoord[0] + 1, currCoord[1]), destination, rule, visited) or 
      pathExists(labyrinth, (currCoord[0] - 1, currCoord[1]), destination, rule, visited) or 
      pathExists(labyrinth, (currCoord[0], currCoord[1] + 1), destination, rule, visited)): 
      print "True" 
      return True 
     else: 
      print"outro" 

    elif rule == Bridge: 
     print currCoord 
     currCoord = nextCoord(currCoord, previousRule) 
     if pathExists(labyrinth, currCoord, destination, rule, visited): 
      print "True" 
      return True 

    else: 
     print currCoord 
     if currCoord in visited: 
       print "False" 
       return False 
     visited.append(currCoord) 
     previousRule = rule 
     currCoord = nextCoord(currCoord, rule) 
     if pathExists(labyrinth, currCoord, destination, rule, visited): 
      print "True" 
      return True 
+7

你需要顯示你的實際代碼。 – BrenBarn 2013-02-27 22:18:27

+0

你能分析變量名嗎?那麼隨後會更容易。 – 2013-02-27 22:24:15

+0

請更正您的身份。很難理解它,因爲語言障礙 – 2013-02-27 22:26:49

回答

1

沒有所有的代碼我我是錯的,但我認爲你需要一個全球性的/無功類存儲返回值。邏輯:首先調用不返回任何內容(或返回None),因爲正在調用其他函數。
要明確:

a = [1,2,[4,6],3,4] 
ret = None 
def f(x): 
    global ret 
    if isinstance(x, list): 
     f(x[0]) 
    else: 
     ret = x 
     return x 

var = f(a) 
print(var, ret) 

如果你測試,你會看到VAR =無,但RET爲1(而不是全球性,我建議你在一個類incapsulate代碼,並使用類似self.ret) 。

P.S .:正如Joel Cornett所說,使用英文/抽象var名稱可以使所有代碼更具可讀性!

+0

這使得詭計!順便說一下,不要翻譯變量等等,我有點擔心。不管怎樣,感謝stackoverflow社區! – user2033936 2013-02-27 23:24:05