前書き
整数の階乗はnn
で計算できます
!= N × (N - 1 )× (N - 2 )× (。。。)× 2 × 1
これは比較的簡単で、新しいことは何もありません。ただし、階乗は、n !のように二重階乗に
拡張できます。!= N × (N - 2 )× (N - 4 )× (。。。)× 4 × 2
偶数のため、及び
N !!= N × (N - 2 )× (N - 4 )× (。。
要約すると、
チャレンジ
負でない整数に対して、あらゆる種類の反復階乗を計算する関数を作成します。
入力
どちらか
- 10以上の負でない整数を含む文字列と、それに続く1つ以上の感嘆符。例えば
"6!"
または"9!!"
または"40!!!!!!!!!!!!!!!!!!!!"
。
または
- 2つの整数で表される同じ値:1つの非負のベース値と、階乗カウントを表す1つの正の値。これは、デフォルトのI / Oルールの任意の形式に従って実行できます。
出力
上記の計算の結果。
チャレンジ発言
0!
1
定義により等しい。あなたのコードはこれを説明する必要があります。- 階乗カウントによって限定されるこの範囲外を、あなたはどのような出力に含みません。を除き
0!
、これはこのルールの唯一の例外です。
例
Input Output
3!!! 3
0! 1
6! 720
9!! 945
10!!!!!!!! 20
40!!!!!!!!!!!!!!!!!!!! 800
420!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 41697106428257280000000000000000
未実装のPython実装で試してください:オンラインで試してください!
総論
3!!!!!!!
未定義であってはなりません3
。答えを返すだけです。1!!=1
(未定義ではない)と同じです。また、入力仕様には、常に少なくとも1つあることが示されている!
ため、最初の例3
は仕様に適合しません。
(3!)!
代わりに、階乗から用語を削除しているわけではありません。紛らわしい名前です。Factorial関数をチェーンで繰り返し適用することになると想定して、実際にそれが何であるかを確認するために注意深く読む必要がありました。幸いなことに、質問はそれを明確に説明しています。 より良い名前は、ストライド階乗またはステップ階乗などです。
0!
いますが、課題のコメントは、階乗カウントがベース値以下になると述べています。