ocaml错误的pow功能给出正确的输出

时间:2017-03-07 17:30:15

标签: ocaml pow

我在ocaml写了一个pow函数,错误地写了这个

let rec pow x y acc = if y = 1 then acc else pow x (y-1) x*x;;

可以使用任何acc值调用此函数并输出正确答案,但必须输出x ^ 2.

这是正确的功能:

let rec pow x y acc = if y = 0 then acc else pow x (y-1) x*acc;;

并使用acc of 1的值调用此函数。

我的问题是为什么第一个函数给出正确的输出?

1 个答案:

答案 0 :(得分:1)

关键是函数应用程序的优先级高于二元运算符。在目前的情况下,else字词相当于(pow x (y-1) x) * x,而不是pow x (y-1) (x*x)