-
[파이썬 기초] 알고리즘의 개념 / 코딩 연습 - 예제7(재귀함수 연습 - 리스트 뒤집기)프로그래밍 2021. 3. 24. 22:36반응형
# 재귀 함수(recursive function) : 자기 자신을 호출하는 함수
(improvemyself.tistory.com/82?category=849184)
코드잇 예제풀이(재귀함수 문제) : 파라미터로 리스트 some_list를 받고, 뒤집힌 리스트를 리턴하는 재귀 함수 flip을 작성(조건 : 반복문 사용하지 말것)
Hint 1 : 재귀함수의 recursive case와 base case를 구분 : 여기서 base case는 인풋 some_list의 길이가 1일때(len(some_list) = 1일때)임 → some_list를 리턴
Hint 2 : recursive case는 나머지 경우인데, some_list = [1, 2, 3, 4, 5]라고 한다면 flip(some_list) = [5] + flip([1, 2, 3, 4]) 가 된다. 여기서 [5]는 리스트의 마지막 원소로, 이것을 나타내는 함수는 some_list[-1:] 이다. (리스트의 뒷부분의 1개의 원소를 나타냄. some_list[-2]: = [4, 5])또한, [1, 2, 3, 4]는 리스트의 앞에서 4개의 원소로, 이것을 나타내는 함수는 some_list[:-1] 이다. (리스트의 뒷부분의 1개의 원소를 빼고 나타냄. some_list[:-2] = [1, 2, 3])
==========================================================
def flip(some_list):
# base case
if len(some_list) == 1:
return some_list
# recursive case
return some_list[-1:] + flip(some_list[:-1])
#테스트
some_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
some_list = flip(some_list)
print(some_list)
[9, 8, 7, 6, 5, 4, 3, 2, 1]
반응형'프로그래밍' 카테고리의 다른 글
[파이썬 기초] 알고리즘의 개념 / 코딩 연습 - 시간 복잡도 (0) 2021.04.01 [파이썬 기초] 알고리즘의 개념 / 코딩 연습 - 예제8(재귀함수 연습 - 이진 탐색 알고리즘) (0) 2021.03.25 [파이썬 기초] 알고리즘의 개념 / 코딩 연습 - 예제6(재귀함수 연습 - 정수n의 각 자릿수의 합) (0) 2021.03.23 [파이썬 기초] 알고리즘의 개념 / 코딩 연습 - 예제5(재귀함수 연습 - 삼각수) (0) 2021.03.23 [파이썬 기초] 알고리즘의 개념 / 코딩 연습 - 예제4(재귀함수 연습 - 피보나치 수열) (0) 2021.03.23 댓글