パナソニックグループプログラミングコンテスト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 1kが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))
