问题描述
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)的增长顺序?
解决方法
要计算f
和g
的顺序,我们需要同时计算两者,而最差的顺序就是答案,因为它们在两个函数中相加。例如n
和n/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
。