Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで再帰関数を使って階乗を計算する方法を解説

ある数の階乗(Factorial)とは、1からその数までのすべての整数を掛け合わせた積のことです。たとえば、5の階乗は「5 × 4 × 3 × 2 × 1 = 120」となります。

再帰関数(Recursive Function)とは、自分自身を呼び出す関数のことを指します。この仕組みを使うと、階乗のように同じ処理を繰り返し行う計算を、シンプルで読みやすいコードで実装できます。

再帰による階乗の計算例

次のプログラムでは、factorial() 関数が引数を1つ受け取り、値を1ずつ減らしながら自分自身を呼び出します。そして引数が1に達した時点で呼び出しを終了し、結果を順番に掛け合わせて返します。

def factorial(x):
    if x == 1:
        return 1
    else:
        return x * factorial(x - 1)

f = factorial(5)
print("factorial of 5 is ", f)

実行結果

factorial of 5 is 120

処理の流れ

上記のコードは、以下のような流れで動作します。

  1. factorial(5) が呼ばれると 5 * factorial(4) を返そうとする
  2. factorial(4)4 * factorial(3) を返す
  3. これが factorial(1) まで続き、1 を返して再帰が終了する
  4. 最終的に 5 × 4 × 3 × 2 × 1 = 120 という結果が得られる

注意点

再帰関数には必ず終了条件(ベースケース)が必要です。上の例では x == 1 の場合に 1 を返すことで、無限ループを防いでいます。終了条件がないと、Pythonが許容する最大の再帰深度(デフォルトで約1000回)を超え、RecursionError が発生するので注意しましょう。

  1. Python関数の引数の数を取得する方法【inspectモジュール活用】

    Python関数の引数の数を調べるには? たとえば、次のようなスクリプト qux.py があるとします。 #qux.py def aMethod1(arg1, arg2): pass def aMethod2(arg1, arg2, arg3, arg4, arg5): pass このスクリプトの中身が分からない(ソースコードにアクセスできない)場合でも、Pythonの標準ライブラリである inspect モジュールを使えば、関数が受け取る引数の数や名前を簡単に調べることができます。 inspectモジュールで引数の一覧を取得する まず、inspect モジュールをインポー

  2. Pythonで再帰関数を使って階乗を求める方法

    再帰(リカージョン)とは、関数が自分自身を呼び出すことで問題を解決するプログラミング手法です。階乗の計算は、この再帰処理の仕組みを学ぶのに最適な題材として広く知られています。正の整数 n の階乗(n!)は、1 から n までのすべての整数を掛け合わせた値です。たとえば、6 の階乗は次のように計算されます。6! = 6 × 5 × 4 × 3 × 2 × 1 = 720再帰を使った階乗計算のコード例次のコードでは、n = 6 と n = 15 の場合の階乗を計算しています。def factorial(n): if n == 1: return 1 else: