递归函数的运行时
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归函数的运行时相关的知识,希望对你有一定的参考价值。
我试图找到这个函数的运行时:
myst_fun_1([]) -> 0;
myst_fun_1(ListUsed = [_ | Tail]) -> length(ListUsed) + myst_fun_1(Tail).
由于这个长度函数是O(N)
而myst_fun_1
被称为N
次,运行时会是O(N^2)
吗?我想知道我的理解是否正确。
答案
myst_fun_1([]) -> 0;
myst_fun_1(ListUsed) ->
myst_fun_1(length(ListUsed), ListUsed).
myst_fun_1(Length, [_ | Tail]) ->
Length + myst_fun_1(Length-1, Tail).
联系(I)
另一答案
length/1
是一个BIF,运行速度比myst_fun_1/1
快得多,所以它比O(N ^ 2)更可能是O(N)。
以上是关于递归函数的运行时的主要内容,如果未能解决你的问题,请参考以下文章