泰勒系列通过F#

Dmy*_*nko 5 f# functional-programming taylor-series

我正在尝试用F#写泰勒系列.看看我的代码

let rec iter a b f i = 
    if a > b then i;
    else f a (iter (a+1) b f i) 
let sum a b = iter a b (+) 0  // from 0
// e^x = 1 + x + (x^2)/2 + ... (x^n)/n! + ...
let fact n = iter 1 n (*) 1 // factorial
let pow x n = iter 1 n (fun n acc -> acc * x) 1 
let exp x =
             iter 0 x
                (fun n acc ->
                     acc + (pow x n) / float (fact n)) 0
Run Code Online (Sandbox Code Playgroud)

在最后一行我尝试将int转换fact n为float,但看起来我错了,因为这段代码不可编译:(我在做正确的算法吗?

我可以先调用我的代码功能吗?

Fyo*_*kin 6

代码无法编译,因为:

  • 你试图pow x n用浮点数除以整数.分部必须具有相同类型的操作数.
  • 您正在指定错误类型的终端案例.文字0是整数.如果你想浮零,使用0.0或缩写0.

试试这个:

let exp x =
         iter 0 x
            (fun n acc ->
                 acc + float (pow x n) / float (fact n)) 0.
Run Code Online (Sandbox Code Playgroud)

PS将来,请提供您所获得的确切错误消息和/或意外结果.简单地说"不起作用"并不是对问题的良好描述.