第二章 :查詢與排序-------2.20實戰_快速設計一個高效的求n次冪的演算法

Curtis_發表於2019-03-07

快速設計一個高效的求n次冪的演算法:

 

思路:翻倍求解

#include<iostream>
using namespace std;

//普通求一個數的冪的方法 
int pow0(int a,int n){
	int res=1;
	for(int i=0;i<n;i++){
		res*=a;
	}
	return res;
}

//優化的求法 
int pow(int a,int n){
	if(n==0) return 1;
	
	int res=a;
	int ex=1;
	while((ex<<1)<n){   //指數試翻倍 
		res*=res;   //結果翻倍 
		ex<<=1;   //對應指數也翻倍 
	}
	return res*pow(a,(n-ex));  //遞迴求解a的(n-ex)次方 
}

int main(){
	cout<<pow0(2,0)<<endl;
	cout<<pow(2,3);
	return 0;
}

結果:

相關文章