>>재귀함수 활용하기
예제 | 재귀함수를 이용해 1에서 n까지 더하는 입출력문을 만들어라. |
결과물 | |
코딩 | def findSum(n): if n==1: return 1 else: return n+findSum(n-1) a=input('숫자 입력:') a=int(a) print(findSum(a)) |
: 재귀함수(순환함수)란 자기 자신을 호출하여 순환 수행되는 함수이다.
: 한 작업을 통째로 해결하는 것이 아닌, 같은 유형의 하위 작업으로 분할하여 해결하는 방법이 효율적일 경우 사용한다,
: 위의 경우처럼 1에서 n까지 더하는 반복작업을 재귀함수를 활용해 쉽게 해결할 수 있다.
>>위의 재귀함수 응용하기
예제 |
1부터 N까지 곱하는 N!(N펙토리얼) 함수를 만들어보기 |
결과물 |
|
코딩 |
def factorial(n): |
: 자기 자신을 호출하는 부분만 바꿔주면 아주 간단하게 펙토리얼도 구현할 수 있다.
>>위의 재귀함수 응용하기2
예제 |
1부터 N까지 곱하는 N!(N펙토리얼) 함수를 함수 호출과 반환의 과정을 포함해 만들어 보기 |
결과물 |
|
코딩 |
def fact(n): |
: 이번 예제가 가장 어려웠다. 결국 비슷한 내용의 함수를 2개 써서 문제를 해결했다. 2개의 함수를 쓰지 않고, 위의 fact(n) 함수만 어떠케 잘 바꾸면 될것 같기도한데.... 아무리 생각해도 모르겠어서 그냥 함수 2개를 사용했다.
: 이 예제의 요지는 재귀함수의 경우 하위 함수를 호출하고 가장 하위함수로부터 값을 하나씩 반환 받는 과정을 거치게 된다는 것. 이 부분을 이해하는 것이 재귀함수의 핵심이다.
>>재귀함수로 피보나치수열 구하기
예제 |
피보나치 수열: 1, 1, 2, 3, 5, 8, 13 ..... >> 앞의 두 수열의 합이 다음 수열의 값이 되는 수열 |
결과물 |
|
코딩 |
def fibo(n): |
: 1항과 2항의 값을 고정하고, 그 외 나머지(else)는 그 전전항과(n-2) 그 전항(n-1)을 호출할 수 있도록 코딩하면 완성!
>>재귀함수로 하노이의 탑 문제 풀기
예제 |
하노이 탑의 원판의 개수를 n개, 원봉을 A, 목적봉을 C, 임시봉을 B 라고 가정했을 때, 하노이의 탑의 원판들을 움직이는 방법을 나타내는 재귀함수를 만들어 보자. |
결과물 |
|
코딩 |
def hanoi(n,원봉,목적봉,임시봉): |
: 하노이의 탑의 핵심인 같은 움직임이 단계마다 반복되는 특징은 재귀함수로 풀기 딱 좋은 특징이다. 두번의 재귀함수 사용을 통해 하노이의 탑을 해결하기 위한 방법을 출력하는 코딩을 만들 수 있다.
: 다만 내 비루한 실력으로는 재귀함수를 이해하기가 참 힘든 것 같다 ㅠㅠ 정확히 어떤 부분에서 재귀함수를 사용하면 좋은지에 대한 감이 없다..... 그 부분은 많은 연습이 필요할 것 같다.
'교육은 한 사람의 인생을 바꾼다 > AI교육' 카테고리의 다른 글
완전 초짜 vvvv : 미디어융합아트와 vvvv (0) | 2021.01.16 |
---|---|
완전 초짜 파이썬 : 함수(목록 반환) (6) | 2020.12.07 |
완전 초짜 파이썬 : 함수(기본) (1) | 2020.12.04 |
완전 초짜 파이썬 : 딕셔너리 (5) | 2020.12.03 |
AI 교육대학원 면접 준비 : 용어 정리 (0) | 2020.06.19 |
댓글