快速幂算法

在高中,有时候需要计算66
我们通常是先算63,然后再算63x63
遇到了67,先算66,再乘个6,
用C语言的递归表示上述步骤
n==0,结果为1
n为偶数 ,结果为an/2xan/2
n为奇数,结果为a(n-1)xa

#include 

using namespace std;
int power(int a,int n)
{
    if(n==0)//递归出口
        return 1;
    else if(n%2==1)
    return power(a,n-1)*a;
    else
    {
        int tmp=power(a,n/2);
        return tmp*tmp;
    }
}
int main()
{
    int a;
    a=power(9,5);
    cout<<a<<endl;
    return 0;
}

你可能感兴趣的:(算法,c++,图论)