Python で階乗を計算する

  1. Python で反復法を使って数の階乗を計算する
  2. Python で再帰を使った数の階乗を計算する
  3. Python の math.factorial() 関数を用いて数値の階乗を計算する

数値の階乗とは、その数以下のすべての正の整数の積のことです。例えば、5 の階乗は、5 以下のすべての数値の積、すなわち、5 * 4 * 3 * 2 * 1 であり、120 に等しくなります。したがって、5 の階乗は 120 になります。

では、数の階乗を計算する Python の関数を書いてみましょう。Python で階乗プログラムを書くには、反復法を使用する方法と再帰法を使用する方法があります。

Python で反復法を使って数の階乗を計算する

反復法を使った階乗プログラムは、プログラムの中で for ループや while ループのようなループを使用する以外の何ものでもありません。Python で反復法を使った階乗プログラムを書く際には、3つの条件をチェックしなければなりません。

  1. 与えられた数が負であること。もし数値が負の場合は、負の数の階乗が存在しないので、階乗を見つけることができないと言うことになります。
  2. 与えられた数がゼロです。2. 数字がゼロの場合: 数字がゼロの場合、ゼロの階乗は 1 であるため、単に 1 と表示します。
  3. 与えられた数が正の場合。数値が正の場合は、その階乗を求めるだけです。
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

関連記事 - Python Math

  • Python で余弦の逆数を計算する
  • Python の二項係数