[Python기초]function 연습2

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!


파이썬 function 연습문제2


문제1: 팩토리얼 계산 함수


팩토리얼은 정수 다음에 느낌표가 붙는 형식으로 표현한다. 팩토리얼은 양의 정수 사진과 자신보다 작은 모든 양의 정수를 곱해주는 수학 계산식이다.
예를들어, 5!(5팩토리얼)이라면 5 * 4 * 3 * 2 * 1이므로 정답은 120이다. 1!은 자기자신 하나이므로 1, 0!은 방법이 없는 개수로 표현해 1이된다.
함수 생성 기능을 이용해 반복문, 재귀함수 이렇게 두 가지로 팩토리얼을 계산하는 함수를 만들어보자.

  • 조건:
    1. 반복문 사용
    2. 재귀함수 사용
  • 출력 예시:
    숫자입력: 5
    5! = 120
    


1. 반복문 사용

def factorial(n):
    fac = 1
    for i in range(n, 0, -1):
        fac *= i
    return fac

# 함수명은 factorial, 매개변수는 n
# 어느 숫자를 입력해도 정수 1은 계산의 곱에 포함되므로 fac=1
# 반복문은 n부터 시작해 1까지 1씩 차감되어 fac에 순차적으로 곱해진다. 
# 반복문이 완료되면 fac값을 반환한다.
# 0 이상의 정수를 인수로 넣어 함수를 실행해보자.
숫자입력: 4
4! = 24

2. 재귀함수 사용

재귀함수는 자기 자신을 참조해 호출하는 함수다.
즉, 함수를 만들 때 만드는 함수를 내용에 적어줌으로 자기 자신을 호출하게 된다.
해당 문제의 메커니즘을 이해해보자.

fac(n) = n * fac(n-1)
: fac(n)은 정수 n과 fac(n-1)을 곱한 값이다.

fac(n-1) = (n-1) * fac(n-2)
: fac(n-1)은 정수(n-1)과 fac(n-2)을 곱한 값이다.

fac(1) = 1
: 1!은 1이다.

fac(n) = n * (n-1) * (n-2) * ... * 1
: 따라서, 이런 메카니즘을 갖고 있다.

그렇다면 이렇게 생각해 볼 수 있다.
4! => fac(4) -> 4 * fac(3) -> 3 * fac(2) -> 2* fac(1) -> 1

이 과정을 반대로 보면,
4! <- 4 * 3 * 2 * 1 <- 3 * 2 * 1 <- 3 * 2 * 1 <- 2 * 1 <= 1
이렇게 표현할 수 있다.
이제 파이썬 함수에 적용해보자.
def factorial(n):
    if n==1:
        return 1
    else:
        return n*factorial(n-1)

# 함수명은 동일하게 factorial, 매개변수는 n
# factorial(1)은 1이므로 if조건문을 사용해 n==1일 경우 1값을 반환해준다.
# 그 외의 정수 값을 입력 받으면, factorial 함수 내에 facotrial 함수를 적용해준다. 입력받은 정수 n과 factorial(n-1)을 반환받는다.
n = int(input('숫자입력: '))
print(f'{n}! = {factorial(n)}')

# input을 사용해 정수값을 입력해보자.
# 제대로 작동할 것이다.
숫자입력: 5
5! = 120







문제2: 숫자를 입력하면 카운트 다운을 해주는 함수를 만들어라.

이전에 비슷한 카운트다운 프로그램을 작성했었다. 반복문을 사용하는 경우는 함수 정의에 그 방식을 적용하면 되고, 재귀함수는 위에 명시한 것처럼 메커니즘을 생각해보고 작성하면 될 것 같다.
  • 조건:
    1. 반복문 사용
    2. 재귀함수 사용
  • 출력 예시:
    5
    4
    3
    2
    1
    

1. 반복문 사용

def count(number):
    for i in range(number, 0, -1):
        print(i)

count(5)

# 함수명은 count, 매개변수는 number
# 반복문을 이용해 입력한 정수 number로 시작해 1씩 떨어져 1까지 반복해서 출력해준다.
# count(n)에 5를 입력해 출력해보자.

2. 재귀함수 사용

def selfCount(number):
    if number >= 1:
        print(number)
        return selfCount(number - 1)
    else:
        return

selfCount(5)

# 함수명은 selfCount, 매개변수는 number
# 만약 입력받은 number가 1 이상이면 자신의 값을 출력한다.
# 그리고 return에 selfCount(number - 1)을 작성해 입력받은 수보다 1적은 수로 다시 함수가 실행되게 한다.
# else는 0이거나 0보다 작은 경우인데, 이때는 아무 값도 출력하지 않는 return만 적어 계산이 끝나게 만든다.
# selfCount(n)에 정수 5를 넣어 출력해보자.

2022

[web]jQuery 복습 3

2 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 2

11 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 1

16 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리4

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리3

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리2

6 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리1

7 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]CSS 기초 정리

9 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]HTML 기초 정리

2 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[Pandas]pandas 연습

3 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑

2021

[Python기초]module

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑