Pythonで再帰を書いていた時にハマった話
こんにちは.Pythonで再帰書いたらちょっとハマったのでメモがてら書いておきます.
def hoge(a, num): if num == 0: return else: num -= 1 return [a] + hoge(a, num)
なんかこんな感じで,aと言う数字をnum個だけ格納するリストを作ると仮定します(あくまで仮の話).
で,このコードはそのまま動かすとエラーになります.
TypeError: can only concatenate list (not "NoneType") to list
理由としては,num == 0の場合に返すreturn.これ,返ってくるのはNoneなので,それをリストと足そうとしているからエラーが返ってくる.
解決策としてはとっても簡単.returnの部分を以下のように変更するだけ.
return []
空のリストを返せば,足しても何の問題もない.けど,解決策として適切か考えると微妙な気もする.再帰でリストを作る機会がどれだけあるのか?と問われるとなかなか浮かばないし.
そんな感じです.