ocaml错误的pow函数提供正确的输出

ocaml错误的pow函数提供正确的输出,ocaml,pow,Ocaml,Pow,我在ocaml中编写了一个pow函数,错误的是a编写了这个函数 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值1调用此函数 我的问题是为什么第一个函数给出正确的输出 关键是函数应用程序的优

我在ocaml中编写了一个pow函数,错误的是a编写了这个函数

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值1调用此函数


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

关键是函数应用程序的优先级高于二进制运算符。在本例中,
else
项等同于
(功率x(y-1)x)*x
,而不是
pow x(y-1)(x*x)