我试图解决这个递归问题:
var xyz = new xyz().ExternalService();
try
{
xyz.GetRelevantData();
}
catch(Exception e)
{
...handle the exception
}
我得到了O(1)的回答,但我觉得我错过了什么。
我很乐意得到一些帮助。
提前致谢!
答案 0 :(得分:2)
对于任何值> = 1.0
,您的递归关系收敛于1.0你对 O (1)的回答是完全正确的。递归关系以如此简单的方式表达,而不是给出算法,你可能会有点抛出?
让我再试一次。也许,也许我们都有点困惑。我在单通话级别回答;也许你需要整体答案(更有可能,现在我考虑一下)。
首先,让我们打个电话。如果n = 2,那就是恒定时间。如果n> 2 ......这就是我对符号不太熟悉的地方。这是表示单个调用的时间,还是整个递归序列降至n = 2的时间?由于实际考虑,我认为必须进行单一呼叫。这使得我之前的回答不正确。
查看n = 3的调用。这扩展并解决为
T(3) = log(T(2)) + 1
T(3) = log(1) + 1
T(3) = 0 + 1 = 1
感应T(n)= 1,n> = 2.事实证明,即使基本情况-T(2) - 具有1以外的值,只要它是有限的和更多超过1 /(我们用于日志的基数),系列将收敛到1,每次调用将处于恒定时间。
因此,为了解决T(n),我们有n-2个调用,每个调用都是T(1)。这给出了 O(n)的整体复杂性。
这是否更清楚?