A suitable method for circular definition
ex) return n * factorial(n-1);
ex) if (n <= 1) return 1;
If there is no part that stops the recursive call, it is called continuously until a system error occurs
대부분의 recursion은 iteration으로 표현(실행) 가능
이러한 장단점들로 인하여 문제에 따라 무엇이 더 나은 방법인지 나뉨
ex 1) Factorial computation
- time complexity : recursion = iteration
- memory and call overhead : recursion > iteration
- total complexity : recursion > iteration
→ iteration is better choice
ex 2) Power computation
- time complexity : recursion < iteration
- memory and call overhead : recursion > iteration
- total complexity : recursion < iteration
→ recursion is better choice
ex 3) Fibonacci computation
- time complexity : recursion > iteration
- memory and call overhead : recursion > iteration
- total complexity : recursion > iteration
→ iteration is better choice


unsmart way






T(n) = xT(yn) + c
→ sub problem의 개수가 x배, size of subproblem이 y배가 됨
※ x == y인 경우, time complexity에는 변화가 없음
power computation에서는 recursive 사용하여 sub problem의 개수는 유지한 상태에서 size를 1/2로 줄임!
참고




size 변화 없이 문제의 개수만 늘어서 비효율적임

대학원에서 더 자세히 알 수 있다고 함
cuase the same terms are computed in dupliate




순서대로 나열된 숫자들의 집합 중 특정한 수의 인덱스를 찾고자 함




problem size는 절반으로 줄고 problem의 개수는 유지함
can be easily implemented using iteration
Ex) return n * factorial(n-1);
difficult to implement using iteration
Ex) return factorial(n-1) * n;
difficult to implement using iteration
Ex) 
if-else를 통해 각각에서 recursion을 사용하는 것은 multi-recursion이 아님!!!!