본문 바로가기
Coding/Javascript

Javascript - 재귀함수(recursion)

by z쿳쿳z 2020. 6. 3.
728x90
반응형

재귀함수는 함수의 반환 값으로 자기 자신 함수를 호출 하는 함수를 말한다. 규칙성이 있고, 반복적으로 사용할 때 사용 하면 좋다.

재귀함수 예제로 피보나치 수열을 이용해서 재귀함수를 설명 하겠다.

피보나치 수열을 공식으로 이야기하면 복잡하지만, 피보나치 수열을 흔히 전전항과 전항을 합치면 다음수가 되는 수열이다.(0과 1 제외)

 

피보나치 수열을 재귀함수로 표현을 하면 아래 사진과 같다.

  *n=0 일 때, if 조건문에 따라 0을 반환

  *n=1 일 때, if 조건문에 따라 1을 반환

  *n=2 일 때, else if 조건문에 따라 fibo(n-1) + fibo(n-2)가 실행이 된다. 즉, fibo(1) + fibo(0) 값을 호출하여 반환한다.

  *n=3 일 때, else if 조건문에 따라 fibo(2) + fibo(1)이 실행되고 fibo(2)는 다시 fibo(1) + fibo(0)을 호출 하가 때문데 fibo(1) + fibo(1) + fibo(0)이 된다.

  *이와 같이 자기 자신을 호출하여 반복하는 함수를 재귀함수라고 한다.

  *주의할점 : 재귀함수를 하면서 함수를 빠져나가는 조건문을 주지 않으면 무한을 반복 되기 때문에 사용에 주의해야 한다.

  *아래 피보나치 수열에서 함수를 빠져나가는 조건은 n-1과 n-2가 감소하면서 n이 0과 1이 되었을 때, 반복되는 함수가 종료 된다.

  *빠져나가는 조건이 없을 때 Maximum stack 이란 에러 메시지가 뜬다. Maximum stack은 무한으로 반복 했다는 뜻 이다.

#javascript#생활코딩#codestates#피보나치수열#재귀함수#recursion#Maximumstack

728x90
반응형

'Coding > Javascript' 카테고리의 다른 글

Javascript - this  (1) 2020.06.07
Javascript - 객체지향프로그램(Object Oriented program)  (1) 2020.06.05
Javascript - 익명함수  (1) 2020.06.02
Javascript - rest parameter(...array)  (1) 2020.06.01