본문 바로가기
TIL - 프로그래밍/개념, 설정

[Python] 반복과 재귀

by chaemj97 2022. 3. 26.
728x90
  • 반복과 재귀의 비교

 

  • 2^k 연산에 대한 재귀와 반복
# 재귀 Recursion
def Power_of_2R(k):
    if k == 0:
        return 1
    else:
        return 2 * Power_of_2R(k-1)

print(Power_of_2R(5)) # 32

# 반복 Iteration
def Power_of_2I(k):
    i = 0
    power = 1
    while i < k:
        power = power * 2
        i += 1
    return power

print(Power_of_2I(5)) # 32

 

  • 선택 정렬 함수(Selection Sort)를 재귀적 알고리즘으로 작성
    • 범위 내 가장 작은 값과 맨 앞 값 자리 바꾸기 
N = 5
arr = [4,2,1,5,3]

# 인덱스 이동하기
def sort(arr,idx,N):
    # idx 번째 자리에 들어갈 요소 찾아 idx번째 요소랑 자리 바꿔주기
    if idx >= N:
        print(arr)
        print('끝')
        return
    # print(arr[idx],end = ' ')
    # idx 포함 뒤쪽에 있는 원소 중 제일 작은 값 찾기
    min_idx = idx
    for i in range(idx,N):
        if arr[min_idx] > arr[i]:
            min_idx = i
    arr[min_idx], arr[idx] = arr[idx], arr[min_idx]
    sort(arr,idx+1,N)
sort(arr,0,N)
728x90
반응형

'TIL - 프로그래밍 > 개념, 설정' 카테고리의 다른 글

[Python] Tree1  (0) 2022.04.03
[Python] 재귀로 순열, 조합  (0) 2022.03.28
[Python] 비트 연산  (0) 2022.03.23
[Python] 2진수, 8진수, 16진수  (0) 2022.03.22
[Python] 복잡도 분석, 표준 입출력 방법  (0) 2022.03.20

댓글