顧名思義,快速冪就是快速算底數的n次冪。
比如計算3的10此方,可以看到一下方法。
普通計算就是:3^10=3*3*3*3*3*3*3*3*3*3
可以變換為:3^10=(3*3)*(3*3)*(3*3)*(3*3)*(3*3)
也就是先對3自己進行平方,再求五次,就是3^10=(3*3)^5,這就相當於求了5次乘法。
最後可以變成先算3的平方,然後算其中五次,相當於隻算了3次乘法。
根據這個過程,可以得到其時間複雜度為 o(log?n),與樸素的o(n)相比效率有了極大的提高。
其中用的是二分法。
比如計算3的10此方,可以看到一下方法。
普通計算就是:3^10=3*3*3*3*3*3*3*3*3*3
可以變換為:3^10=(3*3)*(3*3)*(3*3)*(3*3)*(3*3)
也就是先對3自己進行平方,再求五次,就是3^10=(3*3)^5,這就相當於求了5次乘法。
最後可以變成先算3的平方,然後算其中五次,相當於隻算了3次乘法。
根據這個過程,可以得到其時間複雜度為 o(log?n),與樸素的o(n)相比效率有了極大的提高。
其中用的是二分法。