Hacker rank Challenge/python

30 Days Challenge 9일차

반응형

 

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the factorial function below.
def factorial(n):



if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    n = int(input())

    result = factorial(n)

    fptr.write(str(result) + '\n')

    fptr.close()

 

factorial 함수를 쓸 수 있게 def factorial을 우리가 만드는 문제였다.

 

 

 

 

#!/bin/python3

import math
import os
import random
import re
import sys

# Complete the factorial function below.
def factorial(n):
   if n == 0:
    return 1
   return factorial(n-1)*n

if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    n = int(input())

    result = factorial(n)

    fptr.write(str(result) + '\n')

    fptr.close()

 

factorial은 0! 이라고해서 0이 아니라 0!=1이기 때문에 만약 n에서 0을 입력받았을 때 1이 출력되도록 한다.

만약 0을 입력받지 않았다면 factorial(n-1)을 실행해서 나온 결과와 n을 곱한다.

 

이게 바로 재귀함수라고 하는데,

 

만약 n을 3을 입력받았다고 치자.

factorial(n-1) * n은 factorial(2) * 3이 되고 factorial(2)는 또 factorial(1)*2가 된다. 

또 factorial(1)은 factorial(0)*1이 된다. factorial(0)=1이므로 1*1이다. 

따러서 factorial(1)은 1이므로 factorial(1)*2 = 2이다. 따라서 factorial(2)=2이다.

따라서 factorial(3) = factorial(2)*3 = 6이 나오게 된다. 

 

'Hacker rank Challenge > python' 카테고리의 다른 글

30 Days Challenge 10일차  (0) 2021.01.26
30 Days Challenge 8일차 & python Error 정리  (0) 2021.01.24
30 Days Chellenge 7일차  (0) 2021.01.23
30 Days Chellenge 6일차  (0) 2021.01.22
30 Days Challenge 5일차  (0) 2021.01.21