我想了解爲什麼遞歸函數的行爲方式是這樣。F#理解遞歸函數
let rec fact = function
|0 -> 1
|n -> n * fact(n-1);;
在i執行:
fact 4;;
它響應:
val it : int = 24
這是ofcourse是正確的,因爲1 * 2 * 3 * 4 = 24
什麼我不't get this is piece of code:
|n -> n * fact(n-1);;
我不知道爲什麼它不計算:
4 -> 4 * (4-1)
4 -> 4 * 3
4 -> 12
我的猜測是我誤解n的定義
有人可以做到的榮譽和賜教?
我很難搞清楚在你說的「匹配3與...」這一點上發生了什麼,你能詳細說明一下嗎? – Nulle
@Nulle'函數| 0 - > 1 | n - > n * fact(n-1)'是用於寫'fun x - > match x with |的快捷方式0 - > 1 | n - > n * fact(n-1)'。如果我們將這個函數應用於參數'3',我們可以用|匹配3 0 - > 1 | n - > n * fact(n-1)'。 – sepp2k
感謝您的幫助!非常有幫助! – Nulle