算法导论上说分治法解决一个数的n次方,它的复杂度为logn;而用连乘的复度n;
#include<iostream> using namespace std; int recursion(int x,int n){ if(n==1){ return x; }else { if(n%2==0){//n为偶数 int r=recursion(x,n/2); return r*r; }else{//n为奇数 int r=recursion(x,(n-1)/2); return r*r*x; } } } int main(){ int x=2; int n=17; cout<<recursion(x,n)<<endl; }
时间: 2024-10-24 04:38:14