2023-05-01 TIL

0v0baek·2023년 5월 1일
0

TIL

목록 보기
42/92

재귀 함수 (recursion function)

재귀함수가 뭐야?

재귀 [명사]
1. 원래의 자리로 되돌아가거나 되돌아옴.

즉, 재귀 함수는 원래의 자리로 되돌아가거나 되돌아오는 함수.

"
자기 자신을 스스로 호출하는 함수!
"

를 말한다.

python의 재귀함수

def recursion(n):
	if n < 5:
    	print(n)
        recursion(n+1)
        
recursion(1)

이런식으로 함수 내에서 자기 자신을 스스로 호출한다.
위 예시에서 if문 처럼 종료 조건을 걸어주지 않으면 끊임없이 반복되니 주의하자.

장점

참고 블로그

1. for문, while문에 비한 간결한 코드

재귀 함수의 구조를 보면 무한히 반복되다가 종료되는 부분이 for문이나 while문과 상당히 닮았다.

실제로 재귀 함수로 구현 가능하면 저 둘로도 구현 할 수 있으며, 반대의 경우도 마찬가지다.

하지만 재귀 함수로 구현 할 경우 for문이나 while문에 비해 코드가 훨씬 간결해진다!

2. 변수 선언을 적게 해줄 수 있다.

재귀 함수는 함수 내에서 자기 자신을 불러오기 때문에, 별다른 값을 담아줄 변수를 선언해주지 않아도 되는 장점이 있다!

단점?

자기 자신을 호출하고 값을 기다리기 까지의 메모리 낭비가 있다.

그렇지만 이런 단점도 "꼬리 재귀"를 사용하면 해결된다!
재귀 호출이 끝나는 시점에서 return 값으로 끝내버리는 것이다.

def factorial(n):
    if n == 0 or n == 1:
        return 1
    return n * factorial(n - 1)

이와 같이 끝나는 시점에서 바로 return 해주면 메모리의 낭비를 줄일 수 있다.

profile
개발 공부 하는 비전공자 새내기. 꾸준히 합시다!

0개의 댓글