Python 数値の階乗を求めるプログラム

⚡ スマートサマリー

数の階乗 Python その数までのすべての正の整数の積です。 Python forループ、if-elseチェック、再帰、または組み込みのmath.factorial()関数を使用して計算します。

  • 🔘 forループ: 1からnまで繰り返し、連続する積を掛け合わせて階乗を構築します。
  • ☑️ if-elseチェック: 負の入力に対してはエラーを返すように保護します。階乗には非負の整数が必要だからです。
  • 再帰: 関数は、基本ケースである0に到達するまで、n-1を引数として自身を呼び出す。
  • 🧪 math.factorial(): 数式をインポートし、組み込み関数を呼び出すだけで、高速かつ検証済みの結果が得られます。
  • 🛠️ エッジケース: 0の階乗は1に等しく、 Python 非常に大きな結果をネイティブに処理します。
  • 🤖 AIとデータサイエンス: 確率論、組み合わせ論、そしてSciPyのようなライブラリでは、配列に対して階乗が用いられます。

Python 数値の階乗を求めるプログラム

以下のセクションでは、階乗を計算する4つの方法を示します。 Python — forループ、if-elseバージョン、再帰、およびmath.factorial() — に加えて、その基盤となるアルゴリズムと応用例。

for ループを使用した数値の階乗

例を挙げてみましょう Python 正の整数を入力として受け取り、正の整数の階乗を求めるコードです。以下のコードでは、ループは1から始まり、階乗を求める対象となる整数の直前の数を順に掛けていきます。

以下 Python このコードは、ループを使用して階乗関数を実行する方法を示しています。

Python コー​​ド:

print ("Input a number")
factorialIP = int (input ())
ffactor23 = 1
for j in range (1, factorialIP+1):
   ffactor23 = ffactor23 * j
print ("The factorial of the number is “, ffactor23)

出力:

Input a number
4
The factorial of the number is 24

上記 Python このプログラムは正の数のみを入力として受け取り、負の数のチェックは行いません。このプログラムでは、jが1のとき係数は1になります。jが2のときは係数に2が掛けられ、jが4になって24になるまでこの処理が繰り返されます。

IF…elseステートメントを使用した数値の階乗

以下 Python このコードは、関数を使用して階乗を計算する方法を示しています。ループを使ったバージョンとは異なり、このプログラムは階乗を計算する前に負の数かどうかをチェックします。

前の Python コードでは、負の数のチェックが適用されていなかったため、階乗関数が不完全であり、負の数が入力された場合にエラーメッセージが表示される可能性が高かった。

提示されたコードでは、ループは1から始まり、直前の各数値を掛け合わせていきます。また、この関数は負の数の入力も検証します。

Python コー​​ド:

print("Enter a number for the purpose of determining factorial")
factorialIP = int(input())
def factorial(factorialIP):
   if factorialIP < 0:
     print ('Factorial does not exist')
     factor=0
     return factor
   elif factorialIP == 0:
     factor=1
     return factor
     print(factor)
   else:
     factor = 1
     for j in range (1, factorialIP+1):
       factor = factor * j
     return factor
  print ("The factorial of the number is ", factorial(factorialIP))

出力:

1) Enter a number to determine factorial
   -4
   Factorial does not exist
   The factorial of the number is 0

2) Enter a number to determine factorial
   4
   Factorial does not exist
   The factorial of the number is 24

この Python このプログラムは正の数を受け付け、if文とelse文を使って負の数をチェックします。入力が4の場合、正しく24を返します。

再帰を使用した数値の階乗

以下 Python このコードは、再帰を用いて階乗関数を実装する方法を示しています。この例では、正の整数を入力として受け取る再帰関数が階乗を計算します。

Python コー​​ド:

print("Enter a number for the purpose of determining factorial")
def factorial(num2):
  if num2 < 0:
    return 'Factorial does not exist'
  elif num2 == 0:
     return 1
  else:
     return num2 * factorial(num2-1)
number1 = int(input())
print("The factorial of the number is",factorial(number1))

出力:

Enter a number for the purpose of determining factorial
4
The factorial of the number is 24

再帰は、関数が呼び出されるという概念として説明できます。 Python モジュールは自身を何度も呼び出すことができます。 Python モジュール内に存在する条件が満たされ、呼び出された関数に値が渡されます。

上記で Python このプログラムでは、関数 def factorial は、数値がゼロになるまで再帰的に自身を呼び出し続けます。数値がゼロになると、数値を 1 に初期化し、再帰を終了します。

math.factorial() を使用した数値の階乗

以下 Python このコードは、mathモジュールをインポートすることで使用できるmath.factorial()関数を使用した階乗関数を示しています。

この関数は負の整数を受け付けず、浮動小数点数を指定すると値エラーが発生します。

Python コー​​ド:

print("Enter a number for computing factorial")
import math
number1 = int(input())
print("The factorial is as computed comes out to be ")
print(math.factorial(number1))

出力:

Enter a number for computing factorial
4
The factorial, as computed, comes out to be 24

階乗プログラムのアルゴリズム Python

階乗の概念を説明する例を見てみましょう。

階乗5を求めるには、以下の手順に従ってください。

5! = 5 x (5-1) x (5-2) x (5-3) x (5-4)
5! =120

ほら、5! は120で表されます。

次の図は階乗を計算するアルゴリズムを理解するのに役立ちます。この場合は、階乗 4 の例を見てみましょう。

階乗計画のアルゴリズム

階乗4のアルゴリズム兼図例!

階乗の応用 Python

階乗は数学において幅広い応用があります。階乗の重要な応用例を次に示します。 Python:

  • Python 計算に役立ち、他のプログラミング言語よりも高速かつ効率的に階乗を出力します。
  • その Python コードは理解しやすく、異なるプラットフォーム間で複製可能であり、階乗 Python このプログラムは、いくつかの数学モデル構築課題に組み込むことができる。

よくあるご質問

非負整数 n の階乗は n! と表記され、1 から n までのすべての正の整数の積です。例えば、5! は 5 × 4 × 3 × 2 × 1 = 120 となります。

定義上、0の階乗は1です。ループ、再帰、math.factorial()など、すべてのメソッドは入力0に対して1を返し、この基本ケースによって再帰呼び出しも停止します。

Yes. Python 整数は精度に制限がないため、math.factorial(100) はオーバーフローすることなく 158 桁の結果を返します。入力サイズが大きくなると、メモリ使用量と実行時間だけが増加します。

A forループ 通常は が好まれます。どちらも O(n) の時間で実行されますが、ループは定数メモリを使用するのに対し、再帰はコールスタックを追加して、 Pythonの再帰制限。

標準的なメソッドはすべてn-1回の乗算を必要とするため、時間計算量はO(n)です。反復ループはO(1)の空間しか必要としませんが、再帰は呼び出しスタックのためにO(n)の空間を必要とします。

深い再帰は超える可能性がある Pythonデフォルトの制限は約 1000 回です。入力値が大きい場合は、反復的な for ループまたは math.factorial() を使用するか、sys.setrecursionlimit() を使用して上限を引き上げてください。

はい。階乗は組み合わせ論や、多くの機械学習モデルの基礎となるポアソン分布や二項分布などの確率分布に現れます。データサイエンスライブラリには、配列用のベクトル化された階乗ヘルパーも用意されています。

はい。GitHub Copilotや同様のAIアシスタントは、短いプロンプトからループ、再帰、およびmath.factorial()バージョンを生成します。負の数ガードと0!の基本ケースについては、必ず提案内容を確認してください。