gpt4 book ai didi

sml - 使用预定义的复合函数在标准 ML 中编写幂函数

转载 作者:行者123 更新时间:2023-12-02 08:08:39 27 4
gpt4 key购买 nike

在标准 Ml 中编写幂函数时遇到问题。我正在尝试编写一个名为 exp 的函数,类型为 int -> int -> int

应用exp b e,对于非负e,应该返回b^e

例如,exp 3 2 应该返回 9。exp 必须使用下面提供的函数 compound 来实现。 exp 不应直接调用自身。这是 compound 函数,它接受一个值 n、一个函数和一个值 x。它所做的只是将该函数应用于值 x n 次。

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

我很难弄清楚如何在没有递归的情况下编写这个函数,并且必须使用只能使用一个参数的函数的限制。任何人都知道从哪里开始?

这是我的:

fun exp b 0 = 1  
| exp b e = (compound e (fn x => x*x) b)

我知道这行不通,因为如果我输入 2^5,它会:2*2、4*4、16*16等

最佳答案

你们非常亲密。您对 exp 的定义 fn x => x*x 不是您想要的,因为它反复对输入进行平方。相反,您想重复乘以基数。即,fn x => b*x

接下来,您实际上可以根据 compound 在被要求应用函数 0 时“做正确的事”这一事实来删除 e = 0 的特殊情况次。

fun exp b e = compound e (fn x => b*x) 1

关于sml - 使用预定义的复合函数在标准 ML 中编写幂函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49087750/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com