Ocaml 我应该如何计算f(x)的p倍?
我想计算Ocaml 我应该如何计算f(x)的p倍?,ocaml,Ocaml,我想计算f(…f(x))p次。下面是我的代码 let rec function f x p = if p = 0 then x else function f (f x) p-1;; 我想知道我应该怎样做才对。这很接近,但是您的代码有语法错误,这将使它很难取得进展。我认为主要的问题是您使用函数作为标识符,但它在OCaml中是一个关键字。如果您改为myfun,事情应该会好一些 你还需要注意你的先例。以下代码: f a b-1 解析如下: (f a b) - 1 f a (b - 1) 不是
f(…f(x))
p
次。下面是我的代码
let rec function f x p = if p = 0 then x else function f (f x) p-1;;
我想知道我应该怎样做才对。这很接近,但是您的代码有语法错误,这将使它很难取得进展。我认为主要的问题是您使用
函数
作为标识符,但它在OCaml中是一个关键字。如果您改为myfun
,事情应该会好一些
你还需要注意你的先例。以下代码:
f a b-1
解析如下:
(f a b) - 1
f a (b - 1)
不是这样的:
(f a b) - 1
f a (b - 1)
您需要显式地编写括号才能进行第二次解析。这非常接近,但您的代码存在语法错误,这将使其难以取得进展。我认为主要的问题是您使用
函数
作为标识符,但它在OCaml中是一个关键字。如果您改为myfun
,事情应该会好一些
你还需要注意你的先例。以下代码:
f a b-1
解析如下:
(f a b) - 1
f a (b - 1)
不是这样的:
(f a b) - 1
f a (b - 1)
您需要显式地编写括号才能进行第二次解析。您可以定义递归函数
ch
来多次应用函数f
(教堂数字??),如下所示:
let rec ch f p x = if p = 0 then x else f (ch f (p-1) x);;
原始代码中的问题是:
ch
ch
,以实现如上所示的递归。在原始代码中,没有递归let p1 x = x + 1 ;;
ch p1 3 1 ;;
这会给你
- : int = 3
如图所示。您可以定义一个递归函数
ch
来多次应用函数f
,如下所示:
let rec ch f p x = if p = 0 then x else f (ch f (p-1) x);;
原始代码中的问题是:
ch
ch
,以实现如上所示的递归。在原始代码中,没有递归let p1 x = x + 1 ;;
ch p1 3 1 ;;
这会给你
- : int = 3
果然如此。你太棒了!对于OCaml的新手来说,您指出的问题是看不到的。您太棒了!您指出的问题对于OCaml的新手来说是不可见的。