65457


下記のような関数を定義し、`a = func(1)`を実行すると`a`に`1`が代入されますが、その後`b =
func(1)`を実行すると`list`は`[1, 2]`となりますが、`b`に値が代入されず`b`は`None`となってしまいます。

関数の中で再帰的に関数自身を呼び出した場合、うまく`return`されないのは何故でしょうか。また、`return`する方法はないでしょうか。

[code]

    list = []
    
    def func(x):
         if x in list:
             func(x + 1)
         else:
             list.append(x)
             return x
    
[/code]


CC BY-SA 4.0
2020-04-08T00:51:00.663
65455
2020-04-08T01:13:55.617
2020-04-08T00:57:45.983
39541
39541
question
python
Pythonの再帰関数で戻り値がうまく return されない場合がある


`x in list` が成立したときに何も`return`していないため、`None` となっています。`return` してください。

[code]

        if x in list:
            return func(x + 1)
        ...
    
[/code]


CC BY-SA 4.0
2020-04-08T01:13:55.617
65457
2020-04-08T01:13:55.617
3475
65455
answer