algorithm - 递归函数的运行时

标签 algorithm recursion erlang runtime time-complexity

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

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).

O(N)

关于algorithm - 递归函数的运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52287897/

相关文章:

javascript - 如何将同步和异步递归函数转换为JavaScript中的迭代

javascript - 如何直观地概念化这个 Javascript 递归函数?

python - 与 Project Euler : C vs Python vs Erlang vs Haskell 的速度比较

ubuntu - 如何增加rabbitmq的erlang进程?

algorithm - 头递归还是尾递归?解决需要递归结构的问题的首选方法是什么?

java - 如何将大的 HashMap<String, Integer> 分成小的

algorithm - 在给定时间内可以完成的最大任务

java - 在整数数组中查找最小最大值,性能问题

algorithm - 生成括号的问题

Erlang、SSH 和authorized_keys