int cal(int num, int n) {
if (n == 1)
return num;
if (n % 2 == 1) {
return cal(num, n / 2) * cal(num, n / 2) * num;
} else {
return cal(num, n / 2) * cal(num, n / 2);
}
}
분할 정복 알고리즘 배운 것에 따라 거듭제곱 구하는 함수 만들었는데 이게 분할 정복 알고리즘이 적용된 게 맞음? 결과값은 제대로 나오는데
그리고 이 경우 시간 복잡도가 O(nlog₂ n) 되는 거 맞나요? 헷갈리네
ㅇㅇ보통 밑은 생략해도됨 어차피 상수라서 - dc Cpp
캐싱을 하던가 cal(num, n/2) 값을 재활용하던가 해야지
지금 작성한 코드는 O(n)이고 cal(num, n/2) 를 재사용하면 O(log n)임