

こんにちは。python3で作ったこちらの再帰関数が上手く機能しません。

[code]

        def func(teleports_string):
            strings = [{n[0],n[1]} for n in teleports_string.split(',')]
            start = {'1'}
    
            def search(strings,point,totalpoint):
                for string in strings:
    
                    if point <= string and not string.difference(point) <= totalpoint:
    
                        if len(totalpoint.union(point)) >= 7:
    
                            print(totalpoint)
                            return totalpoint
    
                        search(strings,string.difference(point),totalpoint.union(string))
            return search(strings,start,set())
    
    func("12,23,34,45,56,67,78,81")
    
[/code]

上記のコードの  
`return totalpoint`  
の行で`totalpoint`を戻り値として処理を終了させたいのですが、  
残りの処理を始めてしまいます。  
どのようにすれば、`return totalpoint`で処理を終わらせられるでしょうか。  
ご教授下さい。


CC BY-SA 3.0
2016-03-25T15:42:15.057
23461
2016-03-25T17:00:36.723
2016-03-25T16:14:40.247
3605
14943
question
python アルゴリズム
python3で深さ優先探索の再帰関数が上手く機能しない


`search` 関数の最後で自分自身を再帰的に呼び出していますが、

[code]

    search(strings,string.difference(point),totalpoint.union(string))
    
[/code]

ここに `return` がないので、再帰から戻ってきた後も、外側の `for string in strings:`
を続けて実行しています。しかも、最終的には return なしで関数が終了しているので、何も戻り値を返していません(厳密には `None`
を返していますが)。


CC BY-SA 3.0
2016-03-25T17:00:36.723
23462
2016-03-25T17:00:36.723
3605
23461
answer