Trong bài toán này, cho hai số nguyên x và n. Nhiệm vụ là viết chương trình tính pow(x,n).
Ví dụ:
Input
x = 5, n = 3
Output
125
Chương trình tính pow(x,n) hiệu quả bằng đệ quy chia đôi:
Ví dụ minh họa
#include <iostream>
using namespace std;
float myPow(float x, int y) {
if (y == 0)
return 1;
float temp = myPow(x, y / 2);
if (y % 2 == 0)
return temp * temp;
else {
if (y > 0)
return x * temp * temp;
else
return (temp * temp) / x;
}
}
int main() {
float x = 5;
int n = 7;
cout << x << " mũ " << n << " là " << myPow(x, n);
return 0;
}
Kết quả
5 mũ 7 là 78125
Chương trình dùng cách chia đôi lũy thừa, giảm độ phức tạp xuống O(log n), hỗ trợ cả số mũ âm.