1
我有一些OCaml代碼,可以根據給定的更改量查找所有更改的組合。我有大部分的代碼工作,但我無法弄清楚這個遞歸函數如何實際返回可能的更改組合。查找OCaml中的所有更改組合(貨幣)
let change_combos presidents =
let rec change amount coinlist = match amount with
|0 -> [[]] (*exits when nothing*)
|_ when (amount < 0) -> [] (*exits when less than 0*)
|_ -> match coinlist with
|[] -> [] (*Returns empty list, exits program*)
(*h::f -> something, using [25;10;5;1] aka all change combinations...*)
(*using recursion, going through all combinations and joining lists returned together*)
let print_the_coin_matrix_for_all_our_joy enter_the_matrix =
print_endline (join "\n" (List.map array_to_string enter_the_matrix));;
感謝您的幫助,讓我知道如果我需要澄清的東西:)
這段代碼太不完整,不太多說。我認爲你所要求的一般答案是函數是由表達式定義的(有值的東西)。該值是該函數返回的值。但這可能沒有幫助:-)也許你可以問一些更具體的東西。 –
所以我想我應該可以這樣做我的連接: let join concat all_my_lists = List.fold_left(fun x y - > x^concat^y)「」all_my_lists ;; let array_to_string array = join「,」(List.map string_of_int array);; 但不知道如何實際調用遞歸函數來返回「更改」的所有組合... 希望這使得它更清晰一點。 – Airborne
有點建議,當你用'結構'嵌套'match ...時,使用括號。 –