Recursion 二郎印刷N次

Recursion 二郎印刷N次,recursion,erlang,Recursion,Erlang,我试着教自己一些erlang,我不断地得到一个我不理解的错误 我正在尝试制作一个函数,它接受一个整数N并打印“Hello World”N次,这样我就可以热交换消息(还没有到那个部分) 我的代码: -module(repeater). -export([repeat/1], [start/0]). repeat(Num) when is_Integer(Num), Num > 0 -> if Num == 1 -> io:fwrite("Hello W

我试着教自己一些erlang,我不断地得到一个我不理解的错误

我正在尝试制作一个函数,它接受一个整数N并打印“Hello World”N次,这样我就可以热交换消息(还没有到那个部分)

我的代码:

-module(repeater).
-export([repeat/1], [start/0]).

repeat(Num) when is_Integer(Num), Num > 0 ->

    if Num == 1 ->
        io:fwrite("Hello World"),
        io:fwrite("~n");

     else ->
        io:fwrite(pass(Num - 1));

     true ->
        io:fwrite("I have no idea what is happening")

     end.

start() ->
    repeat(3).
我收到的错误消息是:

 repeater.erl:7: bad export declaration 
 repeater.erl:11: Warning: function pass/1 is unused
 repeater.erl:21: Warning: function start/0 is unused
我不知道为什么它说它是“未使用的”

我发现自己学习这种语言很有挑战性,因为我甚至无法让if-else块正常工作

尝试替换
-导出([重复/1],[开始/0])。


-导出([重复/1,开始/0])。

关于保护表达式,您在
is\u Integer()
中有一个输入错误,应该是
is\u Integer()

关于您的
if
状况,

没有必要使用
else->io:fwrite(pass(Num-1))
。除了
true
之外的任何原子的计算结果都是
false
,因此除了
true
之外的任何原子在这里都是无用的
if
需要至少有一个子句求值为
true
,并且由于您已经有了一个catch-all子句
true->io:fwrite(“我不知道发生了什么”)
如果
Num
大于1,则将调用该子句,因此不需要任何其他子句来停止这些错误!,但是现在代码的计算结果是真实的情况,如果我将3作为参数传递,我觉得不应该发生这种情况?您可以在您的帖子中添加“pass()”的定义吗?对不起,pass应该是repeat(),我更改了名称,因为我不喜欢将pass作为函数名用于本文/在考虑了itAlso之后,我得到了“非法的保护表达式”,是Num大于0,还是is_Integer(Num)?@Geedubs123,is_Integer无效。看见