【发布时间】:2013-10-16 18:09:25
【问题描述】:
如果我认为多项式表示为以下函数:类型 P= int*(int->int) 其中第一个 int 是多项式的阶, (int->int) 是一个函数,它采用和索引和返回系数。
我应该写一个给定一个列表的函数,它给我一个该类型的多项式 例如,form([1]) 给出 (0,fn 0=>1)) 但问题是在编写类似
的内容时form([1,5]) 给出 (1,fn 0=>1|1=>5))
我对 fn 0=>1|1=>5 部分很困惑,因为 fn 不是递归的。我可以从列表的长度中找到多边形的顺序,我可以使用 x::l 访问该列表中的每个元素,但是如何在每次访问时构建这个函数(fn 0=>1|1=>5)的一个元素。我不想要一个明确的答案,但我需要帮助!
【问题讨论】:
-
这样想:当调用者询问多项式的第 n 个系数时,它对应于作为函数参数的列表的第 n 个元素。这是否能说明问题?
-
是的!但是递归如何构建我的输出函数?我尝试过这样的事情,但之后我完全陷入困境: from(x::l)= (length(x::l),fn x=>x+4|-------)) 我该如何构建我的输出函数的其余部分?
-
这是一个需要递归的练习吗?
-
不一定。这正是我认为应该使用递归遍历列表中每个元素的任务的方式。可能是我的想法不正确。如果我有错误的想法,请纠正我
-
基本上你试图产生
List.nth,只有一个咖喱版本,所以调用者只需要提供索引。您可以像这样编写递归抽象f:val rec f = fn i => f (i - 1)