パナソニックグループプログラミングコンテスト2022(AtCoder Beginner Contest 273)の解説記事です。
目次
ABC273 A – A Recursive Function
問題
問題文の要約は以下の通りです。
問題の要約
0 以上の整数 x に対して定義される以下の関数に対して f(x) を求めよ。
・ f(0) = 1
・ f(k) = k × f(k-1) (kは自然数)
入力
N
出力
答えを整数として出力せよ。
解法1
再帰関数を定義する。
解説
問題文通りに再帰関数function
を定義します。
def function(k):
f(0) = 1
より入力が0であれば1を返します。
if k==0:
return 1
k
が0
でなければ、k × f(k-1)
を返します。
else:
return k*function(k-1)
解答
def function(k):
if k==0:
return 1
else:
return k*function(k-1)
N=int(input())
print(function(N))
解法2
答えは入力N
の階乗なので1
からn
までの積を計算する。
解説
答えはN!
になります。
答えAns
を初期値1
で用意します。
これに1
からn
までを順番に掛けます。
Ans=1
for i in range(1,N+1):
Ans*=i
解答
N=int(input())
Ans=1
for i in range(1,N+1):
Ans*=i
print(Ans)
解法3
math.factorial
を用いる
解説
Pythonで階乗はmath.factorial
を用いることで求まります。
解答
import math
N=int(input())
print(math.factorial(N))