공부하자

헷갈리는 파이썬 기초 - for문 & 재귀함수 본문

Python

헷갈리는 파이썬 기초 - for문 & 재귀함수

dev_riley 2021. 8. 8. 00:48

for 문 : 인덱스 출력

1. 0부터 리스트의 길이 만큼의 범위를 순회하면서 인덱스 숫자를 출력하는 for 문을 작성해봅시다.
lunch = ['초밥', '치킨', '족발']

for menu in range(len(lunch)):
	print(menu)

0

1

2

 

1-1. 순서도 함께 출력

for menu in range(len(lunch)):
    print('{0}번째 메뉴: {1}'.format(menu+1, lunch[menu]))

1번째 메뉴: 초밥

2번째 메뉴: 치킨

3번째 메뉴: 족발

 

2. enumerate() : 인덱스(index)와 값(value)를 함께 활용 가능함

for idx, menu in enumerate(lunch):
    print(idx, menu)

0 초밥

1 치킨

2 족발

print(list(enumerate(lunch))[0])
print(type(list(enumerate(lunch))[0]))

(0, '초밥')

<class 'tuple'>

for idx, menu in enumerate(lunch, start=1):
    print(idx, menu)

start=1 이라는 조건을 추가해 인덱스가 1로 시작하여 출력되는 반복문을 작성할 수 있다.

1 초밥

2 치킨

3 족발

 

재귀함수

1. 팩토리얼 계산

- 반복문을 이용한 팩토리얼 계산

def fact(i):
    sum = 1
    while i != 1:
        sum = sum * i
        i = i - 1
    return sum
    
print(fact(5))

 

- 재귀를 이용한 팩토리얼 계산

def factorial(j):
    if j > 1:
        return j * factorial(j-1)
    else : 
        return 1

print(factorial(5))

: 재귀함수를 작성시에는 반드시 base case가 존재하여야 한다.

 base case는 점점 범위가 줄어들어 반복되지 않는 최종적으로 도달하는 곳을 의미한다. (위의 함수에서는 else: return 1 즉, n이 1일 때, 함수가 아닌 정수 반환하는 것)이 base case를 의미

 

2. 피보나치 수열

- 반복문을 이용한 피보나치 수열

def fib_loop(n):
    if n < 2:
        return n
    
    a, b = 0, 1

    for i in range(n-1):
        a, b = b, a+b
    return b

 

- 재귀를 이용한 피보나치 수열

def fib(n):
    if n < 2:
        return n
    else:
        return fib(n-1) + fib(n-2)
        
print(fib(10))

'Python' 카테고리의 다른 글

헷갈리는 파이썬 기초  (0) 2021.08.08
Python 기초 - 비트 단위 연산  (0) 2021.04.16
Comments