【C++】整数幂运算模板(分治+递归)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u011956367/article/details/97503839

思路:

例如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);
}

猜你喜欢

转载自blog.csdn.net/u011956367/article/details/97503839