자료구조와 알고리즘 학습 노트 기초 (2) 재귀와 귀납적 사고

2023. 3. 12. 12:14·이전 게시글/공부 관련

복습

추상 데이터타입 (ADT : Abstract Data Type)

데이터나 연산이 무엇인가는 정의되지만 데이터나 연산을 컴퓨터 상에서 어떻게 구현하는가는 정의되지 않는다

 

재귀

(순환)

알고리즘이나 함수가 수행 도중 자기 자신을 다시 호출하여 문제를 해결하는 기법

* Good 정렬, 탐색

* Bad 피보나치수, 최적 행렬곱 경로

 

ex. 팩토리얼의 정의 (n!)

 

def factorial(n):
    if n<=1: return 1
    else : return (n*factorial(n-1))
    
print(factorial(3))

 

factorial (5) = 5 * factorial (4) -> = 5 * 4 * factorial (3) -> ...... -> = 5 * 4 * 3 * 2 * 1 = 120

 

재귀호출의 가장 중요한 것은 재귀 호출을 멈추는 부분이 있어야한다

만약 없다면? 무한호출

 

순환 vs 반복

시간 복잡도가 동일할 때 어떤 것이 더 효율적인가?

바로 공간의 차이

 

프로그램의 중요도

1. Success rate 

2. time

3. memory

 

 

거듭제곱 반복 O(n) vs 재귀 O(lon_2 n)

 

 

 

 

피보나치 반복적인함수 O(n) 

 

 

하노이의 탑

def move(n, a, b, c):
    if n > 0:
        move(n-1, a, c, b)
        print(f"{a}에 있는 원반을 {b}로 옮긴다.")
        move(n-1, c, b, a)


def main():
    print(move(4, 1, 2, 3))


if __name__ == '__main__':
    main()

 

 

저작자표시 (새창열림)

'이전 게시글 > 공부 관련' 카테고리의 다른 글

[백준 1051번 문제, JAVA] 숫자 정사각형  (0) 2023.03.14
프로그래밍 입문 학습 노트 (1)  (0) 2023.03.12
[백준 1076번 문제, JAVA] 저항  (1) 2023.03.12
[백준 1019번 문제, JAVA] 책 페이지  (0) 2023.03.12
[백준 1057번 문제, JAVA] 토너먼트  (0) 2023.03.09
'이전 게시글/공부 관련' 카테고리의 다른 글
  • [백준 1051번 문제, JAVA] 숫자 정사각형
  • 프로그래밍 입문 학습 노트 (1)
  • [백준 1076번 문제, JAVA] 저항
  • [백준 1019번 문제, JAVA] 책 페이지
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (276)
      • f1tenth (2)
      • 이전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    이것이자바다
    C언어강좌
    마인크래프트스크립트
    마인크래프트강화스크립트
    마크
    마크스크립트
    파이썬
    자바
    이것이자바다확인문제
    캡스톤디자인
    콜라츠추측
    공개SW개발자대회
    티스토리스킨편집
    티스토리반응형2스킨편집
    마인크래프트
    티스토리HTML
    C언어
    반복하지않는수
    빅데이터공모전
    프로그래머스PCCE
    이것이자바다연습문제
    안드로이드
    일본규슈공업대학교
    스크롤바CSS
    파이어베이스
    프로그래머스
    c언어초보
    컨텍스트스위칭
    C++강좌
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
자료구조와 알고리즘 학습 노트 기초 (2) 재귀와 귀납적 사고
상단으로

티스토리툴바