以下问题,在 GRE计算机科学测试2001 中提出。
问题67:考虑以下 C代码。
int f(int x) {
if(x<1) {
return 1;
} else {
return f(x-1)+g(x);
}
}
int g(int x) {
if(x<2) {
return 1;
} else {
return f(x-1)+g(x/2);
}
}
以下哪一项最能说明 f(x)的增长是 x 的函数?
(A)对数 (B)线性 (C)二次 (D)立方 (E)指数
顺便说一句,正确答案是(E)指数(在答案中提及)。但是,我不知道解决这个问题的确切方法。
任何人都可以解决重复关系吗?你有替代方法吗?
请分享您的观点。
答案 0 :(得分:1)
我认为这可以简化为
f(x) >= f(x-1)+f(x-1) for x>1
,
因为g(x) = f(x-1)+g(x/2) >= f(x-1) for x>1
。
第一个不等式只是f(x) >= 2*f(x-1)
,从这里可以很容易地推导出f(x) >= 2^x*f(1)
(f
的值每次x
增长至少加倍1。)