我不擅长确定时间和记忆的复杂性,如果有人可以帮助我,我会很感激.
我有一个算法,在这里,我不知道它的时间和记忆复杂性是什么.
Function sample(k)
IF k < 2
Return 0
Return 1 + sample(k/2)
Run Code Online (Sandbox Code Playgroud)
它的时间和内存复杂性是什么?为什么?
谢谢
我有这个haskell功能,我不太明白.
ns :: [Integer]
ns = 0 : [n+k | (n, k) <- zip ns [1,3..]]
Run Code Online (Sandbox Code Playgroud)
我被要求"需要3 ns".
我认为ns是常量所以它只会用列表的第一个元素压缩,给出(0,1).然后当添加时给出1的答案.然后它说"需要3 ns",所以我用列表的前5个元素压缩0,给出...(0,1),(0,3),(0,5 )然后在添加时,我得到[1,3,5]的最终答案.然而,这不是正确的答案.
ns真正发生了什么?我很难理解......