私はちょうど(0, 1)[ x > 5]
のような文のif-else
の代わりの構造を見て、再帰で試してみたかったのですが何らかの理由で機能しません。ちょっと寂しい気がする。ここでなぜ「最大再帰深度を超えていますか」
は、私が代わりに交換しようとしている元のコードです:再帰の問題を与える
def f(n):
return 1 if n == 1 else n * f(n - 1)
はオルタナティブ、:
def f(n):
return (n * f(n - 1), 1)[n == 1]
代替コードの問題は何ですか?
代替関数の本体の中に 'print n'を挿入することで、自分で問題をデバッグしようとするかもしれません。 –
"n == 1のときどうなるの?"関数は自分自身を呼び出すのをやめますか、それとも続行しますか?何が止まるのでしょうか? –
@BryanOakley私は、式がTrueに評価されると仮定します。これは1にキャストされ、タプルの2番目の要素を返します。再帰を停止します。 –