求整数a的b次方
第一种是直接计算
#include<bits/stdc++.h>
using namespace std;
long long ans=1;
long long f(long long a,long long b)
{
if(b==0)return 1;
while(b)
{
if(b%2==1)
ans=ans*a;
a=a*a;
b=b/2;
}
return ans;
}
int main()
{
long long a,b;
cin>>a>>b;
long long k=f(a,b);
cout<<k;
}
第二种用递归实现
#include<bits/stdc++.h>
using namespace std;
long long f(long long a,long long b)
{
if(b==0)return 1;
if(b%2==1)return a*f(a,b-1);
return f(a,b/2)*f(a,b/2);
}
int main()
{
long long a,b;
cin>>a>>b;
long long k=f(a,b);
cout<<k;
}