我试图制作一个计算数字阶乘的程序。我对perl不是很熟悉,所以我觉得我错过了一些语法规则。
当我输入5时,程序应该返回120.而不是它返回几十个1。当我尝试其他数字时,我仍然会得到1,但更多或更少,这取决于我输入更高或更低的数字。
这是我的代码:
print"enter a positive # more than 0: \n";
$num = <STDIN>;
$fact = 1;
while($num>1)
(
$fact = $fact x $num;
$num = $num - 1;
)
print $fact;
system("pause");
这是我发布Stack Overflow的第一篇文章,所以我希望我遵守所有这些规则。
答案 0 :(得分:5)
问题在于这一行:
$fact = $fact x $num;
x
不是Perl中的乘法运算符。它用来重复一些事情。 1 x 5
将生成"11111"
。
相反,您需要*
。
$fact = $fact * $num;
可以使用*=
编写。
$fact *= $num;
其他一些问题......
Get used to strict
and warnings
now。默认情况下,Perl允许您在不声明变量的情况下使用变量。它们是全球性的,这很难理解你以后会学到的。现在,这意味着如果你有像$face
这样的变量名称的拼写错误,Perl就不会告诉你它。
使用range using ..
上的for
循环可以更好地完成对数字列表的循环。
# Loop from 1 to $num setting $factor each time.
for my $factor (1..$num) {
$fact *= $factor;
}
使用sleep
。