编辑:我很高兴没有人花时间指出第6行和第7行中的实际文本具有与其各自函数调用的输入不同的数字.最终我将为这两个数字(724和27)做这件事,但为了排除故障,我选择了数量更小的数字.所以,如果有人想知道,那就是为什么......
所以,我一直在学习Perl,而且对于一般的编程来说相对较新.我的主管有一套练习让我通过.当前的一个处理Hailstone序列,她希望我编写一个子程序来打印给定数字的序列.
我遇到的问题是,无论我尝试过什么,如果我不止一次调用该函数,它将产生我调用函数的第一个数字的序列,但第二次调用函数,它产生第一个调用的序列,然后是第二个调用的序列.所以,这段代码:
#!usr/bin/perl
use strict;
use warnings;
print "\nThe hailstone sequence for 724 is:\n" . &hail(8) . "\n\n";
print "The hailstone sequence for 27 is:\n" . &hail(16) . "\n\n";
my $n;
my @seq;
sub hail {
no warnings 'recursion';
$n = $_[0];
if ($n > 1) {
push @seq, $n;
if ($n % 2 == 0) {
$n = $n/2;
} else {
$n = (3 * $n) + 1;
}
&hail($n);
} else {
push @seq, $n; …Run Code Online (Sandbox Code Playgroud)