r
が 0
だとクラッシュしてしまいます。 func npr(_ n: Int, _ r: Int) -> Int { (n - r + 1 ... n).reduce(into: 1) { $0 *= $1 } }
..<
の右の n + 1
が不格好なんですよね・・・。 func npr(_ n: Int, _ r: Int) -> Int { (n - r + 1 ..< n + 1).reduce(into: 1) { $0 *= $1 } }
...
使うと実行時エラーを踏みまくるので、 ..<
ばかり使うようにしています。