2017-01-25 5 views
0

私はクロスワードパズルソルバーであることになっている単純なコードを書くことになりました。このプロセスでは、再帰関数を使用しました。出力は本当に私を混乱させる。 、なぜ、カウント3を返されませんPython 2再帰関数は以前に実行された値を返します

1 
2 
3 
Returned Count is 2 

私の質問がされています

def checkMatcher(totalRows, prevCoor, count): 
    print(count) 
    if count < 3: 
     for coor in totalRows[count]: 
      if (prevCoor[0] == coor[0] or prevCoor[0] == coor[0] + 1 or prevCoor[0] == coor[0] - 1) and (prevCoor[1] == coor[1] or prevCoor[1] == coor[1] + 1 or prevCoor[1] == coor[1] - 1): 
       count += 1 
       checkMatcher(totalRows, coor, count) 
    return count 

letterCoordinates = [ 
    [(1,1),(9,7),(13,44),(9,99)], 
    [(1,2),(7,3),(12,12),(10,10)], 
    [(1,3),(8,88),(7,4),(82,11)] 
] 

#for firstletterCoor in letterCoordinates[0]: 
count = checkMatcher(letterCoordinates, (1,1), 1) 
print("Returned Count is " + str(count)) 

出力がされて終わる:ここでは、コードですか?

checkMatcher(totalRows, coor, count) 

戻り値を無視している:

答えて

1

count1に等しい場合、それは1だけインクリメントした後(2を印刷した後3を印刷3と再帰呼び出しを行う)再帰呼び出しに渡されます。制御が最初の呼び出しに戻るとき、countはまだ2です。

再帰呼び出しの戻り値を考慮する必要があります。

+0

ああ、私はちょうど再帰呼び出しで戻り値が必要なように見えます。ありがとう! –

1

問題は、再帰呼び出しがあることです。

関連する問題