재귀 3

[ 개념 ] 18. 재귀(Recursion)의 기본 개념과 예제2

> Recursion의 기본 개념과 예제2 Recursive Thinking - 순환적 사고 Recursion은 수학함수 계산에만 유용한가? 수학함수뿐 아니라 다른 많은 문제들을 recursion으로 해결할 수 있다. 문자열의 길이 계산 순서대로 앞에서부터 하나씩 카운트 또는, 총 문자열의 길이는 첫 번째 문자를 뺀, 전체 문자열의 길이 +1(첫번째 문자)이다. if the string is empty // base case return 0; else return 1 plus the length of the string that excludes the first character; public static int length(String str){ if(str.equals("")) return 0; el..

[ 개념 ] 17. 재귀(Recursion)의 기본 개념과 예제1

> Recursion의 기본 개념과 예제 Recursion 우리말로 순환 또는 재귀함수라고 한다. 즉, 자기 자신을 호출하는 함수, 메소드를 뜻한다. void func(){ ... func(); ... } ex1 - 무한루프 public class Code01{ public static void main(String[] args){ func(); } private static void func(){ System.out.println("hello.."); func(); } } ex2 - 항상 무한루프에 빠질까? recursion이 적절한 구조를 가지고 있다면, 항상 무한루프에 빠지는 것은 아니다. Base Case : 적어도 하나의 recursion에 빠지지 않는 경우가 존재해야 한다. Recursive ..

[ 개념 ] 03. Tail Call Recursion

> Tail Call Recursion C++ 제가 이번에 설명할 것은 제가 검색하다가 발견한! Tail Call Recursion 이라는 새로운 재귀?적인 방법의 코딩입니다. 기존의 재귀함수와 비교하면서 설명하도록 하겠습니다. 1. 기존의 재귀함수 먼저 기존의 재귀함수를 보도록합니다. 여기서는 가장 대표적인 피보나치 수열을 이용한 재귀함수를 살펴보겠습니다. #include using namespace std; int f(int n){ if(n < 0) return 0; if(n < 2) return n; return f(n-1) + f(n-2); } int main(void){ cout