-
playdataAlgo재귀함수 🔄파이썬/알고리즘 공부 2021. 9. 5. 20:16728x90
➰재귀함수 ➰
💢재귀함수란??
메소드 혹은 함수의 내부에서 자기자신의 메소드 혹은 함수를 다시 호출하는 함수!
- ex)

✅예시문제
data = [3, 5, 8]성분들의 합으로 표현할 수 있는 숫자의 경우의 수는??

✅성분들의 합

중복값들이 존재하므로 2^3의값인 8과 값이 다르므로 완전탐색으로 구현해보자
✅반복문을 활용한 완전탐색
data = [3, 5, 8] result = set() for i in range(2): for j in range(2): for k in range(2): result.add(data[0] * i + data[1] * j + data[2] * k) print(result) [0, 3, 5, 8, 11, 13, 16]위에 함수에서 값이 3개이므로 for문으로 가능했지만 아래와 같은 상황이라면 어떻게 할 것인가?
data = [3, 5, 7, 10, 12, 15, 20]우리는 여기서 성분의 갯수는 반복문의 갯수라는 것을 알 수 있다.
이럴경우 재귀함수라는 것을 사용해보자.✅재귀함수 원리

재귀함수 사용이유-코드의 간결화 및 변수 사용 최소화하기 위해서이다. 조건문을 활용하여 재귀함수 종료조건을 삽입해 주어야 한다.
✅재귀함수를 활용한 완전 탐색
def recur(index, value) if index == len(data)://재귀함수 종료구문 result.add(value) else: recur(index+1, value+data[index])//재귀함수 부문 recure(index+1, value) data = [3, 5, 8] result = set() recur(0, 0) print(result) (0, 3, 5, 8, 11, 13, 16 ) ======================== data = [3, 5, 8, 10, 12, 16, 15, 20] result = set() recur(0, 0) print(result) (0, 3, 5, 8, 10, 12, 13, 15, 17.... )✅재귀함수 활용(팩토리얼)

✅재귀함수 활용(파보나치수열)

def fibanoacci(n): if n == 0 or n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2)'파이썬 > 알고리즘 공부' 카테고리의 다른 글
playdataAlgo[백준]풍선터트리기🎈 , [프로그래머스]카펫📜 (0) 2021.09.06 ⏭playDataAlgo 동적계획법 (0) 2021.09.05 210826_#1-Stack, Queue (0) 2021.08.25 playdataAlgo 비밀지도🌐, 전화번호 목록☎️ (0) 2021.08.17 playdataAlgo DFS,BFS 예제 (0) 2021.08.09 - ex)