高效率的求幂运算

计算X^N的常见算法是使用N-1次乘法自乘,但是递归算法更好,如果N是偶数,
我们有X^N=X^(N/2)X^(N/2),如果N是奇数则X^N=[X^(N-1)/2] [X^(N-1)/2].

#include<stdio.h>
int IsEven(unsigned N);
long int Pow(long int X,unsigned int N);
int main()
{
    long int X=0;
    unsigned int N=0;
    scanf("%ld%d",&X,&N);
    printf("%ld",Pow(X,N));
    return 0;
}
long int Pow(long int X,unsigned int N)
{
    if(N==0)
       return 1;
    /*if(N==1)
       return X;*/
    if(IsEven(N))
       return Pow(X*X,N/2);
    else 
       return Pow(X*X,N-1)*X;
}
int IsEven(unsigned N)
{
    if(N%2==0)
    return 1;
    else 
    return 0;
 } 

算法复杂度O(logN),
写代码时写成scanf(“%ld%d\n”,&X,&N);一直无法显示答案,orz 难受

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值