快速幂算法(递归与非递归)
#include<iostream>
#include<algorithm>
using namespace std;
//快速幂a^n
//递归
double f1(double a,int n){
if(a==0) return 0;
if(n==0||a==1) return 1;
double x=f1(a,n/2);
if(n%2) return a*x*x;
else return x*x;
}
//非递归
double f2(double a,int n){
int i;
double b,s=1.0;
i=n;b=a;
while(i>0){
if(i%2) s*=b;
i/=2;
b*=b;
}
return s;
}
int main(){
double a=2;
int n=3;
cout<<"递归 "<<f1(a,n)<<endl;
cout<<"非递归 "<<f2(a,n);
return 0;
}
#【国庆活动】带上CSDN一起玩转国庆#