프로그래밍/Python

[Codeup 재귀함수 연습] 1901 1902 1904 1905 1912

mhko411 2021. 1. 19. 22:03
728x90

- 1901

1부터 정수 n까지 출력하는 재귀함수를 설계하시오.

num=int(input())

def f(num):
    if num!=1:
        f(num-1)
    print(num)
f(num)

- 1902

정수 n부터 1까지 출력하는 재귀함수를 설계하시오.

num=int(input())

def f(num):
    if num==1:
        print(num)
    else:
        print(num)
        f(num-1)
f(num)

- 1904

시작수(a)와 마지막 수(b)가 입력되면

a부터 b까지의 모든 홀수를 출력하시오.

a,b=input().split()
a=int(a)
b=int(b)

def odd(a,b):
    if a>b:
        return 0
    elif b%2:
        odd(a,b-1)
        print(b,end=" ")
    elif not b%2:
        odd(a,b-1)
        
odd(a,b)


# 위의 코드와 반대로 a가 증가
a,b=map(int,input().split())

def f(a,b):
    if a>b:
        return 0
    elif a%2:
        print(a,end=" ")
        f(a+1,b)
    elif not a%2:
        f(a+1,b)
f(a,b)

=> 입력으로 2, 7일 때 오름차순으로 홀수를 출력해야한다. 재귀호출을 할 때 종료조건을 살펴본다. a를 증가시키든 b를 증가시키든 a가 b보다 커지면 호출이 종료되어야한다. 이후 b를 감소시키면서 재귀호출을 했는데 이는 재귀호출로 들어갔을 때 반대로 나오면서 작은 값부터 출력해야하기 때문이다.


- 1905

정수 n이 입력으로 들어오면 11부터 n까지의 합을 구하시오.

import sys
sys.setrecursionlimit(1000000)
n=int(input())

def f(n):
    if n==1:
        return 1
    return n+f(n-1)

result=f(n)
print(result)

- 1912

팩토리얼(!) 계산

num=int(input())

def factorial(n):
    if n==1:
        return 1
    return n*factorial(n-1)
result=factorial(num)
print(result)