Python で階乗を計算する
数値の階乗とは、その数以下のすべての正の整数の積のことです。例えば、5 の階乗は、5 以下のすべての数値の積、すなわち、5 * 4 * 3 * 2 * 1
であり、120 に等しくなります。したがって、5 の階乗は 120 になります。
では、数の階乗を計算する Python の関数を書いてみましょう。Python で階乗プログラムを書くには、反復法を使用する方法と再帰法を使用する方法があります。
Python で反復法を使って数の階乗を計算する
反復法を使った階乗プログラムは、プログラムの中で for
ループや while
ループのようなループを使用する以外の何ものでもありません。Python で反復法を使った階乗プログラムを書く際には、3つの条件をチェックしなければなりません。
- 与えられた数が負であること。もし数値が負の場合は、負の数の階乗が存在しないので、階乗を見つけることができないと言うことになります。
- 与えられた数がゼロです。2. 数字がゼロの場合: 数字がゼロの場合、ゼロの階乗は
1
であるため、単に1
と表示します。 - 与えられた数が正の場合。数値が正の場合は、その階乗を求めるだけです。
def factorial(num):
if num < 0:
print("Factorial of negative num does not exist")
elif num == 0:
return 1
else:
fact = 1
while num > 1:
fact *= num
num -= 1
return fact
num = 5
print("Factorial of", num, "is", factorial(num))
出力:
Factorial of 5 is 120
Python で再帰を使った数の階乗を計算する
再帰とは、同じ関数を何度も何度も呼び出すことに他なりません。再帰を使用すると、より少ない行数のコードを書くことができ、反復法を使用して書くコードよりも読みやすくなります。
再帰関数を呼び出すたびに、メモリ内に再帰スタックが作成されます。この再帰スタックにはプログラムカウンタと呼ばれるものがあり、再帰関数の実行が終了した後、次にどの命令を実行するかを追跡しています。
def factorial(n):
return 1 if (n == 1 or n == 0) else n * factorial(n - 1)
num = 5
print("Factorial of", num, "is", factorial(num))
出力:
Factorial of 5 is 120
Python の math.factorial()
関数を用いて数値の階乗を計算する
階乗関数を一行で書きたい?あなたには無理そうに見えますか?階乗関数を一行で書く方法があります。これは、math
モジュールを使用することで可能です。math
モジュールの中には、数値の階乗を計算するための factorial
関数があります。
この関数を math モジュールからインポートして、プログラムの中で呼び出し、計算したい階乗の数値を渡さなければなりません。以下の例を参照してください。
from math import factorial
print("Factorial is", factorial(5))
出力:
Factorial is 120
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn