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