python学習-階乗を計算するいくつかの方法

1729 ワード

方法1:普通のforループ文:
a = 1
n = 5
for i in range(1,n+1):
    a = a * i
print(a)

結果:
120

方法2:前編の博文で述べたreduce()関数を採用する:
from functools import reduce
n = 5
print(reduce(lambda x,y:x*y,range(1,n+1)))

結果:
120

方法3:関数の再帰を採用する:
def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return (n*factorial(n-1))

a = factorial(5)
print(a)

結果:
120

関数の再帰には終了メカニズムが必要です.そうしないと、ずっと再帰します.上記のプログラムでif判定文が与えられてループの進行を終了する.
以上の3つの方法はそれぞれ異なる方法を採用しており、1つ目は最も理解しやすく、2つ目は最もpythonicであり、3つ目は使いやすさが最も高い.3つ目は、いつでも呼び出すことができ、異なる値を得ることができる階乗関数を直接定義します.