2016-07-07 12 views
0

以下は、最も長いconcat strをカウントするためのPythonコードです ループとアウト側のループで関数を呼び出すことができませんsuffixString私はループの外に呼び出した場合Pythonの外側と内側のループで再帰を行う方法

それは私達があなたの問題がcheckIfitsLongest機能やsuffixString変数のスコープではないことを見ることができますいくつかのよく配置さprintデバッグ文を置く

t = {"asds":"asds","asas":"asas"} 

    def checkIfitsLongest(str1): 
     for i in range(1, len(str1)-1): 
      suffixString = str1[i+1:-1] 
       if t.has_key(suffixString): 
        break 
     checkIfitsLongest(suffixString) 
+2

これはあまり明確ではありません。あなたがしようとしていることをよりよく説明してください。 – Julien

+0

はい、私達は理解できません...入力が与えられた。明確な目的 – Destrif

+0

休憩後私はcheckIfitsLongest(suffixString)を呼び出さずに動作しません –

答えて

0

です。

t = {"asds":"asds","asas":"asas"} 

def checkIfitsLongest(str1): 
    print "checking", str1 
    for i in range(1, len(str1)-1): 
     suffixString = str1[i+1:-1] 
     print "suffix", suffixString 
     if t.has_key(suffixString): 
      break 
    checkIfitsLongest(suffixString) 

は今インタプリタで実行します。

>>> checkIfitsLongest("asdf") 
checking asdf 
suffix d 
suffix 
checking 

Traceback (most recent call last): 
    File "<pyshell#5>", line 1, in <module> 
    checkIfitsLongest("asdf") 
    File "C:/Users/me/Desktop/cccc.py", line 10, in checkIfitsLongest 
    checkIfitsLongest(suffixString) 
    File "C:/Users/me/Desktop/cccc.py", line 10, in checkIfitsLongest 
    checkIfitsLongest(suffixString) 
UnboundLocalError: local variable 'suffixString' referenced before assignment 
>>> 

だから我々はsuffixStringが正しく受け継がれていることがわかります。ただし、空の文字列を関数に渡すと(決してforループに入る)初期化されることはありません。

再帰的な基本ケースを確認する方法を検討する必要があります。通常、これは関数の初めに行います。

関連する問題