숫자의 거듭제곱은 x^y로 계산할 수 있습니다. 여기서 x는 숫자이고 y는 그 거듭제곱입니다.
예를 들어.
Let’s say, x = 2 and y = 10 x^y =1024 Here, x^y is 2^10
재귀 및 비재귀 프로그램을 사용하여 숫자의 거듭제곱을 계산할 수 있습니다. 각각 다음과 같이 주어진다.
비재귀 프로그램을 사용한 수의 거듭제곱
비재귀 프로그램을 사용하여 숫자의 거듭제곱을 구하는 프로그램은 다음과 같습니다. -
예시
#include<iostream> using namespace std; int power(int x, int y) { int i,power=1; if(y == 0) return 1; for(i=1;i<=y;i++) power=power*x; return power; } int main() { int x = 3; int y = 4; cout<<"x = "<<x<<endl;; cout<<"y = "<<y<<endl; cout<<"x^y = "<<power(x,y); return 0; }
x = 3 y = 4 x^y = 81
위의 프로그램에서 power() 함수는 숫자의 거듭제곱을 계산하는 데 사용됩니다. 재귀적이지 않은 함수입니다. 함수에서 1에서 y까지 실행되는 for 루프가 사용됩니다. 루프를 반복할 때마다 x에 거듭제곱을 곱합니다.
따라서 x는 자체적으로 y번 곱해지고 그 결과는 거듭제곱에 저장됩니다. 이로 인해 x^y가 전원에 저장됩니다. 그런 다음 전원이 main() 함수에 반환됩니다.
다음 코드 스니펫은 이것을 보여줍니다 -
int power(int x, int y) { int i, power = 1; if(y==0) return 1; for(i=1;i<=y;i++) power = power*x; return power; }
main()에서 x, y 및 x^y 값이 표시됩니다. 이것은 아래 주어진 코드 스니펫에 나와 있습니다 -
cout<<"x = "<<x<<endl;; cout<<"y = "<<y<<endl; cout<<"x^y = "<<power(x,y);
재귀 프로그램을 사용한 수의 거듭제곱
재귀 프로그램을 이용하여 수의 거듭제곱을 구하는 프로그램은 다음과 같습니다.
예시
#include<iostream> using namespace std; int power(int x, int y) { if (y == 0) return 1; else if (y%2 == 0) return power(x, y/2)*power(x, y/2); else return x*power(x, y/2)*power(x, y/2); } int main() { int x = 3; int y = 4; cout<<"x = "<<x<<endl;; cout<<"y = "<<y<<endl; cout<<"x^y = "<<power(x,y); return 0; }
출력
x = 3 y = 4 x^y = 81
위의 프로그램에서 power()는 재귀 함수입니다. y의 값이 0이면 1을 반환합니다. y가 짝수이면 값 x와 y/2로 자신을 재귀적으로 호출하고 power(x, y/2)*power(x, y/2)를 반환합니다. y가 홀수이면 값 x 및 y/2로 자신을 재귀적으로 호출하고 x*power(x, y/2)*power(x, y/2)를 반환합니다. 다음 코드 스니펫에서 이를 확인할 수 있습니다.
int power(int x, int y) { if (y == 0) return 1; else if (y%2 == 0) return power(x, y/2)*power(x, y/2); else return x*power(x, y/2)*power(x, y/2); }를 반환합니다.
main()에서 x, y 및 x^y 값이 표시됩니다. 이는 아래에 제공된 코드 스니펫에 나와 있습니다.
cout<<"x = "<<x<<endl;; cout<<"y = "<<y<<endl; cout<<"x^y = "<<power(x,y);