Rya*_*n B 3 syntax perl loops factorial while-loop
我正在尝试制作一个计算数字阶乘的程序.我对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");
Run Code Online (Sandbox Code Playgroud)
这是我第一篇关于Overflow的帖子,所以我希望我遵守所有这些规则.
问题是这一行:
$fact = $fact x $num;
Run Code Online (Sandbox Code Playgroud)
x不是Perl中的乘法运算符.它用来重复一些事情.1 x 5会产生"11111".
相反,你想要*.
$fact = $fact * $num;
Run Code Online (Sandbox Code Playgroud)
哪个可以用*=.
$fact *= $num;
Run Code Online (Sandbox Code Playgroud)
其他一些问题......
习惯了strict,warnings现在.默认情况下,Perl允许您在不声明变量的情况下使用变量.它们是全球性的,这很难理解你以后会学到的.现在,这意味着如果你有一个变量名称的拼写错误,像$facePerl不会告诉你它.
# Loop from 1 to $num setting $factor each time.
for my $factor (1..$num) {
$fact *= $factor;
}
Run Code Online (Sandbox Code Playgroud)
使用,而不是使用系统调用来暂停程序sleep.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |