Time complexity 这段代码的运行时间是多少?是n log n还是n?

Time complexity 这段代码的运行时间是多少?是n log n还是n?,time-complexity,Time Complexity,我编写了这段代码来使用分治方法查找pow(a,n)。我不确定这段代码有多复杂。是n还是nlog n pow(a,n) { if n->1 return a i<-floor(n/2) j<-ceil(n/2) return pow(a,i) * pow(a,j) } pow(a,n) { 如果n->1,则返回一个 每次调用到 PoW(a,n)< /代码>导致2次调用 PoW(a,n/2)< /代码> .< /p>这并不意味着将问题划分成n/2,意味着log n

我编写了这段代码来使用分治方法查找pow(a,n)。我不确定这段代码有多复杂。是n还是nlog n

pow(a,n)
{
  if n->1 return a
  i<-floor(n/2)
  j<-ceil(n/2)
  return pow(a,i) * pow(a,j)
}
pow(a,n)
{
如果n->1,则返回一个

每次调用到<代码> PoW(a,n)< /代码>导致2次调用<代码> PoW(a,n/2)< /代码> .< /p>这并不意味着将问题划分成n/2,意味着log n级,在每一级的功是n/n。这使得nLogn?考虑p(1,8):p(1,4)*p(1,4),然后p(1,2)*p(1,2)*p(1,2)*p(1,2),然后p(1,1)*p的调用数。(1,1)*p(1,1)*p(1,1)*p(1,1)*p(1,1)*p(1,1)*p(1,1)。调用的总数为1+2+4+8=15。每个级别的工作不是n/2,因为每次调用只做O(1)个工作。