0
下面是使用Stream.unfold
顯示含酏劑的斐波納契序列的示例。Elixir Stream.unfold設置新狀態
Stream.unfold({0,1}, fn {f1,f2} -> {f1, {f2, f1+f2}} end) |> Enum.take(15)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
爲什麼它需要提供在{f1, {f2, f1+f2}}
f1
並不僅僅是{f2, f1+f2}
?
因爲在上述作者的代碼的解釋說:
新狀態移動一個向下的順序,所以 {F1,F2}的初始狀態變爲{F2,F1的一個新的狀態+ F2}。
對不起,所以在下面的部分'{F1,{F2,F1 + F2}}' - 'f1 = f2(當前迭代)'和'f2 = f1 + f2(用於下一次迭代)',對嗎? (基本上它只是嵌套) – kirqe
是的,如果狀態是'{a,b}',下一個狀態是'{b,a + b}',並且現在產生的值是'a'。 ('a'和'b'比'f1'和'f2' IMO更容易遵循)。 – Dogbert