재귀는 간단하게 설명
간단한 개념처럼 보이지만 결국에는 더 혼란스러워집니다.
걱정마세요, 당신은 바보가 아닙니다. 처음부터 혼란스러운 주제입니다.
더 이상 고민하지 않고 여기에 주제에 대한 나의 견해가 있습니다.
재귀란 무엇입니까?
재귀에 대한 오래된 농담이 있습니다.
To understand recursion, you must first understand recursion
이 글을 처음 읽었을 때, 나는 똥을 이해하지 못했기 때문에 마음이 날아갔다. 그러나 이제 누군가가 "재귀가 무엇입니까?"라고 물을 때마다 사실이기 때문에 농담을 인용합니다.
간단히 설명된 재귀는 문제를 분할 정복(Divide and Conquer)이라고도 하는 더 작은 문제로 분해하여 문제를 해결하는 방법입니다.
시나리오를 상상해 봅시다:
문제: 피자를 통째로 주문했는데 다 먹고 싶은데 피자가 한 번에 먹기에는 너무 큽니다.
해결책: 피자를 조각으로 나눈 다음 조각을 한 조각씩 먹을 수 있습니다.
이것은 재귀의 매우 추상적인 예이지만 핵심 재귀는 분할 및 정복을 사용하여 문제를 해결하는 방법이기 때문에 분할 및 정복의 개념을 이해하기를 바랍니다.
예시
기초 작업을 배치해 보겠습니다.
문제: 숫자를 받아 카운트다운하는 함수를 원합니다.
샘플 입력: 5
샘플 출력:
5
4
3
2
1
이것은 루프와 권리를 사용하여 간단하게 수행할 수 있다고 말할 수 있지만 이 게시물의 맥락에서 이것은 재귀를 보여주는 좋은 예입니다.
function countDownFrom(number){
if(number === 0){
return; // base case
}
console.log(number)
countDownNumber(number - 1); // recursive case
}
모든 재귀 함수가 가져야 하는 것을 분석해 보겠습니다.
기본 사례: 기능을 중지하는 조건입니다. 기능이 없으면 기능이 끝없이 계속됩니다.
재귀 사례: 다른 매개변수를 사용하여 함수를 다시 호출하는 경우입니다.
이제 우리는 재귀에 새로운 정의를 줄 수 있습니다:
Recursion is when a function calls itself, until it doesn’t.
결론
나는 이것이 끝날 때까지 재귀에 대해 덜 혼란스러워하기를 바랍니다. 질문이 있으시면 댓글에 남겨주세요.
Reference
이 문제에 관하여(재귀는 간단하게 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tamerlang/recursion-explained-simply-19j3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)