我想构建一个名为Square(N)的函数。这个函数将接受来自我之前构建的一个函数的整数列表,然后它将返回它接收到的整数列表,现在只有每个数字被平方。
因此,如果读列表是[1,2,3,4],那么它应该返回[1,4,9,16]。我的职能如下:
Square(N) when N > 0 -> Square(digitize(N));
Square([]) -> [];
Square([H|T]) -> [H*H|Square(T)].如果您想知道digitize(N)做什么,它会读取任何数字,然后将该数字的每一个数字显示在一个列表中。数字化功能如下:
digitize(N) when N < 10 -> [N];
digitize(N) -> digitize(N div 10)++[N rem 10].编译函数时得到的结果是一个错误:
an error occurred when evaluating an arithmetic expression
发布于 2015-09-19 22:12:13
将N(整数)传递给数字化函数后,它将返回一个列表。因此,您不能将返回的列表传递回同一个函数,并将其与整数0进行比较。您应该分解正方形函数,以便它调用另一个函数示例square_list来处理从数字化函数返回的列表。见下面的例子。
square(N) when N > 0 -> square_list(digitize(N)).
square_list([]) -> [];
square_list([H|T]) -> [H*H|square_list(T)].
digitize(N) when N < 10 -> [N];
digitize(N) -> digitize(N div 10)++[N rem 10].https://stackoverflow.com/questions/32672740
复制相似问题