perl - 返回长字符串 1 的短阶乘计算器
perl - short factorial calculator returning long strings of 1's
我正在尝试制作一个计算数字阶乘的程序。我对 perl 不是很熟悉,所以我想我缺少一些语法规则。
当我输入 5 时,程序应该 return 120。相反,它 return 是几十个 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");
这是我第一次 post 堆栈溢出,所以我希望我遵守所有posting 规则。
问题出在这一行:
$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 不会告诉你。
循环数字列表最好用 for
循环 range using ..
。
# Loop from 1 to $num setting $factor each time.
for my $factor (1..$num) {
$fact *= $factor;
}
不使用系统调用来暂停程序,而是使用 sleep
。
我正在尝试制作一个计算数字阶乘的程序。我对 perl 不是很熟悉,所以我想我缺少一些语法规则。
当我输入 5 时,程序应该 return 120。相反,它 return 是几十个 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");
这是我第一次 post 堆栈溢出,所以我希望我遵守所有posting 规则。
问题出在这一行:
$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 不会告诉你。
循环数字列表最好用 for
循环 range using ..
。
# Loop from 1 to $num setting $factor each time.
for my $factor (1..$num) {
$fact *= $factor;
}
不使用系统调用来暂停程序,而是使用 sleep
。