在f#中有多重賦值(即a,b = b,a),它可以在單行中寫Fibonacci ..可以有人展示它是如何的..我知道它可能在ruby中F中的Fibonnaci#
回答
斯科特Hanselman的幾乎涵蓋這this blog post.
下面是相關片段:
let rec fib n = if n < 2 then 1 else fib (n-2) + fib(n-1)
斯科特得到了來自Dustin Cambell's blog.我張貼斯科特的版本,因爲他也有它的Ruby代碼。值得注意的是,在F#中,變量通常是不可變的,所以a,b = b,a
實際上並沒有重新分配任何東西(我認爲它甚至不是有效的語法)。相反,像let swap (a,b) = (b,a)
這樣的函數正在獲取一個元組,並返回一個新的元組,其內容反轉。
正如Hanselman的博客評論中指出的那樣,n = 0也不正確。 – 2011-04-04 05:47:49
let main = System.Console.WriteLine("Fibonacci")
我想他/她是指斐波那契函數的定義^^; – 2011-04-04 04:30:35
那麼,它仍然寫斐波那契在一行:) – CloudyMarble 2011-04-04 07:35:33
你真的在開玩笑嗎?提問者確實提出了明確的問題。 – 2011-04-04 07:49:52
更長但更快版本(經由尾遞歸在輔助功能fibi
):
let fib = let rec fibi a b = function | 0 -> a | c -> fibi b (a+b) (c-1) in fibi 0I 1I
對於外行來說,Seq.unfold是一個序列發生器。它接受種子作爲輸入並調用一個函數,該函數返回序列中的下一個元素Some(nextElement, nextSeed)
或None
以終止序列。
它使一個非常有趣的一個斐波納契班輪:
> let fibs = (0L, 1L) |> Seq.unfold (fun (a, b) -> Some(a, (b, a+b)));;
val fibs : seq<int64>
> fibs |> Seq.take 50 |> Seq.toList;;
val it : int64 list =
[0L; 1L; 1L; 2L; 3L; 5L; 8L; 13L; 21L; 34L; 55L; 89L; 144L; 233L; 377L; 610L;
987L; 1597L; 2584L; 4181L; 6765L; 10946L; 17711L; 28657L; 46368L; 75025L;
121393L; 196418L; 317811L; 514229L; 832040L; 1346269L; 2178309L; 3524578L;
5702887L; 9227465L; 14930352L; 24157817L; 39088169L; 63245986L; 102334155L;
165580141L; 267914296L; 433494437L; 701408733L; 1134903170L; 1836311903L;
2971215073L; 4807526976L; 7778742049L]
- 1. Lagged Fibonnaci Algorthm
- 2. Fibonnaci序列
- 3. Fibonnaci序列
- 4. 計算Fibonnaci號
- 5. fibonnaci python系列代碼
- 6. 遞歸fibonnaci樣累計
- 7. 工作的一個Fibonnaci/mysequence代碼
- 8. 使用Javascript回調Fibonnaci序列
- 9. Fibonnaci序列黃金比例在R
- 10. F#中的FirstOrDefault#
- 11. F#列表中的排序列表F#
- 12. F#中的標誌變量不變F#
- 13. F中的交集#
- 14. F中的Char值#
- 15. 訂購的F#中
- 16. 在Javascript中,爲什麼我不能用f(f)代替x => f(f)(x)?
- 17. 在Vim中從f切換到F無,
- 18. 在Python 2.7中區分f()和f(** kwargs)
- 19. system.convert.tobase64string(在F#中)
- 20. F#中SublimeText 2
- 21. 如何在C#/ F#MVC4中的F#文件中使用斷點?
- 22. int(* f [])();和int f []();
- 23. 支架在F#(讓passFive F =(F 5))
- 24. 解析模式中的錯誤:f。 g in fmap(f。g)= fmap f。 fmap g
- 25. F中的主因子#
- 26. F#中的AutoOpen屬性
- 27. F中的異步屏障#
- 28. f中的凱撒密碼#
- 29. F中的匿名類#
- 30. F#中的動態函數
從問題是如何措辭,這可能是在代碼高爾夫更approprite:http://codegolf.stackexchange.com – 2011-04-04 04:31:05