考虑以下C代码:
int foo(int x)
{
if(x < 1) return 1;
else return foo(x-1) + bar(x);
}
int bar(int x)
{
if(x < 2) return 1;
else return foo(x-1) + bar(x/2);
}
每个foo
和bar
函数的时间复杂度和空间复杂度是什么?
答案 0 :(得分:-2)
解决这个问题的方法是查看函数实际执行的操作。没有一般规则。你只需要打开你的大脑。
当你调用foo(1000)时,至少会调用多少个foo(999)? 至少会拨打多少来电foo(998)?
...
至少会拨打多少来电foo(501)? 至少会拨打多少来电foo(500)?