Class16(재귀함수, 콜백함수)
2022. 05. 26. 수업내용 정리 #1/2
함수.. 재귀함수, 콜백함수
-
재귀함수(recursive function)
함수가 자기 자신을 호출하는 것을 재귀호출이라고 합니다.
재귀 함수는 자기 자신을 호출하는 행위, 즉 재귀 호출을 수행하는 함수를 말합니다.
주로 반복되는 처리를 위해 사용합니다.
/* 팩토리얼(계승).. 1부터 자신까지의 모든 양의 정수의 곱 */ function factorial(n){ if(n<=1) return 1; return n * factorial(n-1); } document.write(factorial(0),'<br>'); document.write(factorial(1),'<br>'); document.write(factorial(2),'<br>'); document.write(factorial(3),'<br>'); document.write(factorial(4),'<br>'); document.write(factorial(5),'<br>'); document.write(factorial(6),'<br>');
웹페이지 화면 ▼
동작원리를 이미지로 나타내면 아래와 같습니다.
재귀함수는 자신을 무한호출하기 때문에 반드시 탈출 조건을 만들어줘야 합니다.
위의 예시 코드에서는 ‘ if(n<=1) return 1; ‘ 부분에 해당합니다.
반복문을 사용하지 반복되는 구문을 처리할 수 있으나, 무한루프에 빠지기가 쉽고 이로 인한 에러가 발생할 위험이 큽니다.
그렇기 때문에 반복문을 사용하는 것보다 확실히 효율적일 때만 사용하는 것이 좋습니다.
-
콜백함수
다른 함수를 만들 때 입력(parameter)을 함수로 받아서 사용할 수 있는데, 이 때 인자로 사용되는 함수를 말합니다.
함수이름 없이 익명으로도 전달 가능한 함수를 말하기도 합니다.
function introduce (lastName, firstName, callback) { // 세번째 인자를 callback이라는 함수로 지정 var fullName = lastName + firstName; callback(fullName); // 인자는 fullName } introduce("홍", "길동", function(name) { document.write(name); }); // 결과 -> 홍길동 function say_hello (name) { document.write("안녕하세요 제 이름은 " + name + "입니다"); } function say_bye (name) { document.write("지금까지 " + name + "이었습니다. 안녕히계세요"); } introduce("홍", "길동", say_hello); // 결과 -> 안녕하세요 제 이름은 홍길동입니다 introduce("홍", "길동", say_bye); // 결과 -> 지금까지 홍길동이었습니다. 안녕히계세요
웹페이지 화면 ▼
★함수를 나눠줌으로써 코드의 재활용이 가능하고, 관리도 쉬워지는 장점이 있습니다.
★단, 너무 많이 콜백을 연결하면 나중에 디버깅 하기가 힘들어지기 때문에 적당히 나누어서 사용하는 것이 좋습니다.
댓글남기기