【问题标题】:Power function using multiplication and iteration in Standard ML标准 ML 中使用乘法和迭代的幂函数
【发布时间】:2020-12-17 07:48:30
【问题描述】:

我无法理解仅使用迭代和乘法在 SML 中实现幂函数的方法。

我的迭代如下:

fun iterate 0 f x = x
  | iterate n f x = iterate (n-1) f (f x);

虽然我的乘法基本上是递归迭代

fun multiply 0 f = 0
  | multiply f x = iterate x (fn x => x + 1) (multiply x (f-1));

幂函数基本上是相同基数乘法的迭代,但我不知道要递减哪个值

power n f = iterate (mult n n) (fn x => x + 1) (power (n) (f-1))

这绝对是错误的

【问题讨论】:

  • 您的问题绝对是this question 的重复,我今天早些时候对此给出了广泛的回答。看看那个。 :-)

标签: sml ml


【解决方案1】:
power n f = iterate (mult n n) (fn x => x + 1) (power (n) (f-1))

所以,说到命名,我肯定会写power x ypower i jpower x n之类的,因为xyijn看起来它们是数字或整数,而 f 看起来像是一个函数。所以马上你就有了:

fun power x y = iterate (...a...) (...b...) (...c...)

至于这三个部分的内容,...a...,...b...和...c...:

一个。 iterate这个东西调用n,也就是迭代的次数。

b. iterate这个东西调用f,也就是每次应用的函数。

c。 iterate这个东西调用x,就是每次应用的那个。

正如How to make a multiplication function using just addition function and iterate function in SML 中所述,让power 自己调用是没有意义的;使用iterate 的目的是将递归交给此列表组合器,而不是使用显式递归(其中power 在其定义中的某处引用了自身)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 2016-01-19
    • 2012-04-09
    • 1970-01-01
    相关资源
    最近更新 更多