我在查找OCaml中典型指数函数的更快版本时遇到了问题。这里有一些指引,我试图遵循:创建快速指数函数
- 不是的
expt b n ==> b * (b * (b ...)
典型的递归指数版本的函数接收两个参数B和N,基本上采取分而治之的立场。 - 如果n为偶数,则
fastexpt b n => (b^(n/2))^2
否则,如果n是奇数则fastexpt b n => b * (b^(n - 1))
下面是我迄今编写的代码:
let fastexpt : int -> int -> int
= fun b n ->
if n = 0 then 1
else if ((n mod 2) = 0) then (expt b (n/2)) * (expt b (n/2))
else b * (expt b (n - 1));;
我的问题是:有没有写方式这个功能没有使用expt
功能?
使用'fastexpt'呢? –
也许我不太了解OCaml语言,但是如果我要包含紧固插件,那么我不必将紧密插件的初始定义定义为“let rec”吗? – Sean
@Sean,来自https://stackoverflow.com/help/how-to-ask: **发布问题并回复反馈 发布后,将问题留在浏览器中打开一段时间,然后查看如果有人评论。如果您错过了一条明显的信息,请准备好通过编辑您的问题进行回复以包含它。如果有人发布答案,请准备好尝试并提供反馈!** 当您提问时,请接受答案并回答评论或答案。你所有的问题都没有被接受的答案,这很奇怪。不要粗鲁,人们在这里帮忙,不要离开和沟通。 – Lhooq