Divide-and-conquer algorithm in multiplication
$$ x^n=x\cdot x\cdot x\cdots x $$时间复杂度为O(n),有n-1个乘法
$$ x^n=x^\frac n2\cdot x^\frac n2\qquad\mbox{if x is even}\\ x^n=x^\frac{n-1}{2}\cdot x^\frac{n-1}{2}\cdot x\qquad\mbox{if x is odd} $$变成了两个相同的子问题和一次乘法
$T(N)=T(N/2)+\Theta(1)$
时间复杂度为:$T(N)=O(\log_2 n)$
C语言实现:
| |