递归求幂的复杂度

来源:互联网 发布:mac如何剪辑音频文件 编辑:程序博客网 时间:2024/06/07 05:19

在数据结构与算法分析这本书中,通过递归的方式求幂,其时间复杂度为O(LogN),其代码如下

long int;pow(long int x, unsigned int N){    if(N==0)        return 1;    if(IsEven)        return Pow(x*x, N/2)    else        return Pow(x*x, N/2)*x}

当把Pow(x*x, N/2)改为 Pow(x, N/2)*Pow(x, N/2)时其时间复杂度不再是O(LogN),而是N

原程序中,最多需要执行2LogN次乘法,将其改成Pow(x, N/2)*Pow(x, N/2)后,每次递归调用两次,可以看作是分成了两个子任务,因此所需要的乘法次数为这里写图片描述
所以其大O值为 N

0 0
原创粉丝点击