标签:
递归函数:
在F#中一般不允许调用自身,而只能通过关键字rec来声明其为递归函数:
最大公约数的应用,使用辗转相除法:
[<EntryPoint>] let main argv = let rec gcd(a,b) = if a = 1 then b elif b = 1 then a elif a = b then b else if a > b then gcd(a-b, b) else gcd(a,b-a) (72,54) |> gcd |> printfn "gcd(72,54) = %i" 0 // 返回整数退出代码
调用CLR函数:
如果要经常调用某个其他的.net语言函数,可以先定义一个F#函数将封装起来,从而保持程序风格的一致性:
[<EntryPoint>] let main argv = let Concat str1 str2 = System.String.Concat(str1,str2) (Concat "Hello" "World") |> printfn "%s" 0 // 返回整数退出代码
程序实例,背包算法问题:
[<EntryPoint>] let main argv = let rec ks c w (v: int list) = if c <=0 then 0 elif List.length w = 1 then if w.Head > c then 0 else v.Head else let w1 = w.Tail let v1 = v.Tail if w.Head > c then ks c w1 v1 else max (ks c w1 v1) ((ks (c-w.Head) w1 v1) + v.Head) let ks90 = ks 90 let x1 = ks90 [20;30;40;50] [4;5;4;9] let x2 = ks90 [15;18;21;24;30;33] [5;7;8;11;15;15] 0 // 返回整数退出代码
标签:
原文地址:http://www.cnblogs.com/qugangf/p/4619615.html