public int foo (int x , int k) {
if (x <= k)
return 1;
else
return foo (x/k , k) + 1;
}
从我的理解,这应该等于条件的运行时间+较大的if/else语句的运行时间。大哦表示法下面语句的运行时间是多少?
但是,我无法确定语句“return foo(x/k,k)+ 1”的正确运行时间。这会保持不变吗? x和k的增加似乎对运行时间没有影响,因为它们之间的比率对结果很重要。
任何清晰度将不胜感激。谢谢!
从逻辑上推导出结果似乎相当棘手,但您可以通过测量各种输入的运行时间并寻找趋势来找到答案。幸运的是,你甚至不需要时间测量功能来做到这一点,因为函数返回的数字与函数体执行的次数相同。防爆。如果函数返回6,则返回时间是其返回值的两倍3. – Kevin 2015-02-11 14:10:06