递归函数的运行时

问题描述 投票:2回答:2

我试图找到这个函数的运行时:

myst_fun_1([]) -> 0;
myst_fun_1(ListUsed = [_ | Tail]) -> length(ListUsed) + myst_fun_1(Tail).

由于这个长度函数是O(N)myst_fun_1被称为N次,运行时会是O(N^2)吗?我想知道我的理解是否正确。

algorithm recursion erlang runtime time-complexity
2个回答
1
投票
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)


-2
投票

length/1是一个BIF,运行速度比myst_fun_1/1快得多,所以它比O(N ^ 2)更可能是O(N)。

© www.soinside.com 2019 - 2024. All rights reserved.