递归 – 递归方法的大O - 代码日志

递归 – 递归方法的大O

我很难确定简单递归方法的大O。当我多次调用一个方法时,我不能把我的头包围。我会更具体地谈谈我的困惑,但目前我正在回答一些问题,代替不想欺骗,我要求任何回应这个帖子的人都会提出一个简单的递归方法,提供对所述方法的大O的简单说明。 (最好在Java …我正在学习的语言。)

谢谢。

您也可以递归定义顺序。例如,假设你有一个函数f。计算f(n)需要k步。现在你要计算f(n 1)。让f(n 1)调用f(n)一次,那么f(n 1)取k一些不变的步骤。每个调用将采取一些常数步骤,因此这个方法是O(n)。

现在看另一个例子。让我们说你通过添加以前的两个结果来实现fibonacci:

fib(n) = { return fib(n-1) + fib(n-2) }

现在让我们说,你可以在大约k个步骤中计算fib(n-2)和fib(n-1)。要计算fib(n),您需要k k = 2 * k步长。现在让我们说你要计算fib(n 1)。所以你需要两倍于fib(n-1)的步骤。所以这似乎是O(2 ^ N)

诚然,这不是很正式,但希望这样你可以得到一点感觉。

http://stackoverflow.com/questions/11750226/big-o-of-recursive-methods

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:递归 – 递归方法的大O