Swift - Recursion(꼬리 재귀)

짠승이·2022년 1월 10일
0

Recursion

Recursion(재귀) 의 설명에 앞서 먼저 러시아 인형 을 예로 삼을까 합니다.
러시아 인형 은 가장 큰 인형 속에 보다 작은 인형들이 들어가 있습니다.
이처럼 프로그래밍 안에서도 어떤 문제를 해결하기 위해 알고리즘을 설계할 때 동일한 문제의 조금 더 작은 경우를 해결함으로써 그 문제를 해결하는 것입니다.

Swift 로 Recursion(재귀) 를 설명하면

함수가 자신을 직접 또는 간접적으로 호출하는 프로세스

라고 설명할수 있을것 같습니다.

함수가 존재하고 그 함수에서 또 다시 함수를 호출합니다.
또한 함수를 종료하는 조건이 있지 않은 경우 함수는 무한루프에 빠지게 됩니다.

그래서 Recursion(재귀) 함수가 올바르게 작동하려면
두가지의 다른 조건이 필요합니다.

재귀 함수 는 함수를 호출을 담당하는 부분 , 함수의 종료를 담당하는 부분이 필요합니다.
그럼 위에서 보여드림 cream() 함수를 손보겠습니다.

이런식으로 두가지의 조건을 충족시키게 되면 재귀함수의 올바른 사용이라고 볼수 있습니다.

그럼 재귀 함수를 사용하여 프로그래밍을 해보겠습니다.

함수를 call 한 줄을 보시면 매개변수 는 5 입니다.
그럼 if문에서는 number(5) != 0 이기 때문에 false 로 if는 실행되지 않습니다.
그렇게 되면 if문은 종료 부분인 Base case의 충족요건이 되는 것이고

호출부분인 두번째 return문을 설명드리겠습니다.
Stack과 함께 설명하자면

위 순으로 스텍에 추가 됩니다.
스텍에서는 각 값을 계승 하여 연산이 시작됩니다.

factorial() 의 출력문을 보겠습니다.

이렇게 알맞는 값이 산출되는것을 볼수 있습니다.

거듭제곱 함수

profile
뭐라도 해보려는 사람

0개의 댓글