【发布时间】:2021-05-19 16:05:35
【问题描述】:
我要解决的问题如下: 编写一个名为 collatz 的 Erlang 函数,它接受一个参数 N。您可以假设 N 是整数 1 或更大。该函数应打印以 N 开头的 Collatz 序列(每行一个数字)。例如,collatz( 4 ) 应打印 4、2、1(在单独的行上)。 collatz( 6 ) 应该打印 6, 3, 10, 5, 16, 8, 4, 2, 1(在单独的行上)。
我编写的 collatz 函数工作正常,但在单独的行上打印输出时遇到困难。下面代码的注释部分是我尝试在单独的行上生成输出。
collatz(1) -> [1];
collatz(N) when N rem 2 == 0 ->
[N|collatz(N div 2)];
%[io:format("Collatz is : ~p~n",[N])N|collatz(N div 2)];
collatz(N) ->
[N|collatz(3*N+1)].
%[io:format("Collatz is : ~p~n",[N])N|colla[N|collatz(N div 2)]tz(3*N+1)].
当我调用 collatz(5) 时得到的输出是 [5,16,8,4,2,1]。我希望将这些数字打印在不同的行上。
【问题讨论】:
标签: functional-programming erlang