版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
思路:
例如2^101,如果采用循环或者普通递归计算的话,会计算101次。
2^101=2*4^50=2*16^25=2*16*256^12……,最终可以优化为极短的计算次数。
代码如下:
#include <iostream>
using namespace std;
long long res(long long base,long long top){
if(top==0) return 1;//0次幂
if(top==1) return base;//1次幂
if(top%2) return base*res(base*base,top/2);//奇数次幂
else return res(base*base,top/2);//偶数次幂
}
int main(){
long long base,top;//底数和指数
cin>>base>>top;
cout<<res(base,top);
}