【问题标题】:read a list of integers from another function and then square it从另一个函数读取整数列表,然后将其平方
【发布时间】:2015-09-20 18:23:24
【问题描述】:

我想构建一个名为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

【问题讨论】:

    标签: list erlang


    【解决方案1】:

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

    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].
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-15
      • 2021-06-21
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 2014-08-31
      • 2014-07-06
      • 2021-09-02
      相关资源
      最近更新 更多