[중간정리] 1주차 - 재귀 함수, 피보나치 수열, 퀵 정렬, CPU의 PC/ALU

2025. 3. 20. 19:25·크래프톤 정글/CS기초(키워드, 개념정리)

재귀 함수

재귀 함수의 장단점

장점

  • 코드가 직관적이고 간결해 이해하기 쉽다.

단점

  • 호출 시 추가적으로 메모리를 사용해 메모리 소비가 많고, 과도한 호출 시 스택 오버플로우가 발생할 수 있다.
  • 반복문에 비해 실행 속도가 느리다.

 

피보나치 수열 반환 함수

1항부터 n항까지의 피보나치 수열 반환 함수를 반복문/재귀문으로 각각 만들어보기. n이 0~2에 대한 처리는 두 방식 모두 같았다. 다만 n이 3이상일 때 원래 수열을 가지고 계속 덧붙여가느냐(반복문), 직전 n-1에 대한 피보나치 수열을 새롭게 불러와 덧붙여 반환하느냐(재귀문)의 차이가 있었다.

반복문으로 구현한 피보나치 수열 반환 함수

def pivo(n):
    if n == 0:
        return []
    elif n == 1:
        return [1]
    elif n == 2:
        return [1, 1]
        
    arr = [1, 1]
    for i in range(3, n+1):
        arr.append(arr[-1] + arr[-2])
    return arr

재귀문으로 구현한 피보나치 수열 반환 함수

def pivo(n):
    if n <= 0:
        return []
    elif n == 1:
        return [1]
    elif n == 2:
        return [1, 1]
    
    arr = pivo(n-1)
    arr.append(arr[-1] + arr[-2])
    return arr

 

 

퀵 정렬 수행과정 그려보기

책의 퀵 정렬은 우선 가운데 값을 피벗으로 선택한다. 그 뒤, pl과 pr이 엇갈릴 때까지 각각 피벗보다 큰 수, 작은 수를 가리킨다면 둘을 뒤바꾼다.

 

그러면 pl과 pr이 엇갈린 후, 두 개의 그룹이 생기게 된다. 이때 왼쪽 그룹에서 pr과 left가 같은 요소를 가리킨다면 재귀를 종료하고, 아니라면 그 그룹에 대해 재귀적으로 퀵 정렬을 수행한다.

 

이어서 오른쪽 그룹에서 pl과 right가 같은 요소를 가리킨다면 재귀를 종료하고, 아니라면 그 그룹에 대해 재귀적으로 퀵 정렬을 수행한다.

 

실제 퀵 정렬 예시

[3, 1, 2, 5, 3, 1] 에 대해 퀵 정렬을 수행하는 과정

 

 

CPU에서 PC와 ALU가 수행하는 역할

  • PC : 다음에 실행할 명령어가 저장되는 레지스터
  • ALU : 산술 및 논리 연산을 처리하는 장치. 레지스터에서 값을 받아 연산을 수행한 뒤, 레지스터에 저장한다.
저작자표시 비영리 변경금지

'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글

[CS기초] 분할 정복(Divide and Conquer)  (0) 2025.03.25
[CS기초] 이분 탐색(Binary Search)  (0) 2025.03.25
[알고리즘] 백트래킹 기본 예제 코드(순열, 조합)  (0) 2025.03.20
[CS기초] 정수론(Number Theory)  (0) 2025.03.19
[CS기초] 완전 탐색(Brute Force)  (0) 2025.03.19
'크래프톤 정글/CS기초(키워드, 개념정리)' 카테고리의 다른 글
  • [CS기초] 분할 정복(Divide and Conquer)
  • [CS기초] 이분 탐색(Binary Search)
  • [알고리즘] 백트래킹 기본 예제 코드(순열, 조합)
  • [CS기초] 정수론(Number Theory)
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글 N
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리) N
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어) N
        • 마이 정글(WIL, 에세이) N
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[중간정리] 1주차 - 재귀 함수, 피보나치 수열, 퀵 정렬, CPU의 PC/ALU
상단으로

티스토리툴바