gx的增长顺序

问题描述

int f (int x)
{
      if (x < 1)  return 1;
      else return (f(x-1) + g(x));
}

int g (int x)
{
      if (x < 2) return 2;
      else return (f(x-1) + g(x/2));
}

如何在这里计算g(x)的增长顺序?

解决方法

要计算fg的顺序,我们需要同时计算两者,而最差的顺序就是答案,因为它们在两个函数中相加。例如nn/2之间,n最差,因此顺序为n

只要调用f就是f(x-1),那么顺序就是n。在g函数中,我们有g(x/2)表示g(x/2)的顺序为n/2,因为每次将x除以2。>

因此,在g中,我们有n + n/2的顺序,最差的顺序是n,所以g(x)的顺序的结果n