List 从另一个函数中读取整数列表,然后将其平方

List 从另一个函数中读取整数列表,然后将其平方,list,erlang,List,Erlang,我想构建一个名为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) when N &

我想构建一个名为
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) when N < 10 -> [N];
digitize(N) -> digitize(N div 10)++[N rem 10].
如果你想知道数字化(N)做什么,它会读入任何数字,然后将该数字的每个数字显示在一个列表中。数字化功能如下所示:

Square(N) when N > 0 -> Square(digitize(N));
Square([]) -> [];
Square([H|T]) -> [H*H|Square(T)].
digitize(N) when N < 10 -> [N];
digitize(N) -> digitize(N div 10)++[N rem 10].
当N<10->[N]时数字化(N);
数字化(N)->数字化(N div 10)+[N rem 10]。
编译函数时得到的结果是一个错误:

计算算术表达式时出错

将N(整数)传递给Digitalize函数后,它将返回一个列表。因此,不能将返回的列表传递回同一个函数,并将其与整数零进行比较。您应该分解square函数,以便它调用另一个函数示例square_list来处理digitalize函数返回的列表。见下面的例子

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].
N>0时的平方(N)->square\u列表(数字化(N))。
方形列表([])->[];
方形列表([H | T])->[H*H |方形列表(T)]。
当N<10->[N]时数字化(N);
数字化(N)->数字化(N div 10)+[N rem 10]。