여기서 우리는 숫자의 3차 루트를 구하는 방법을 볼 것입니다. 숫자가 27이라고 가정하고 이 숫자의 세제곱근은 3입니다. 이 문제를 해결하기 위해 일부 라이브러리 함수를 사용하지 않고 자체 논리를 정의합니다. 우리는 이진 검색 접근 방식을 사용할 것입니다. 이 문제를 해결하려면 다음 단계를 따라야 합니다.
임계값 =0.000001
과 같은 임계값이 있다고 가정합니다.-
왼쪽 값을 0으로 시작하고 오른쪽 값을 숫자로 시작
-
중간 계산 :=(왼쪽 + 오른쪽)/2
-
(숫자 – mid3)의 절대값이 임계값보다 작으면 mid를 답으로 반환
-
mid3이 숫자보다 크면 오른쪽으로 설정 :=mid
-
mid3이 숫자보다 작으면 왼쪽으로 설정 :=mid
예시
#include<iostream> #include<cmath> using namespace std; double cubeRoot(int num) { double threshold = 0.000001; double left = 0, right = num; double mid; while(left <= right){ mid = (left + right)/2; if(abs(num - (mid*mid*mid)) < threshold) return mid; if((mid*mid*mid) > num) right = mid; if((mid*mid*mid) < num) left = mid; } } int main() { int n = 3; cout << "cube root of 3 is: " << cubeRoot(n); }
출력
cube root of 3 is: 1.44225