我想解決一個問題不能超出循環塊
Rahul正在玩一個非常有趣的遊戲。他有N個磁盤(每個磁盤的半徑相等)。 每個磁盤都有與其關聯的1到N中不同的數字。磁盤被放置在一堆之上。
Rahul想要按照從上到下的順序對這堆磁盤進行排序。但他有一個非常非常特殊的方法來做到這一點。在一個步驟中,他只能從一堆盤中選擇一張盤,而他只能將其放在最上面。
Rahul希望用盡可能少的步驟對他的一堆磁盤進行分類。所以幫助拉胡爾這樣做。因此,不必顯示實際步驟,只需回答可能的最小步驟數就可以分類,以便Rahul可以檢查他是否正在做對或錯的工作。
代碼我寫是
sub get_order {
my (@input1)= @_;
my @input2 = @input1;
my $count = 0;
sub recursive {
my $max = 0;
last if ($#input2 == -1) ;
foreach (0 .. $#input2) {
$max = $max > $input2[$_] ? $max : $input2[$_];
print " maximum is $max \n";
}
if ($max == $input2[$max-1]) {
$abc = 0;
} else {
$count++;
#push @input2, $max;
}
# deleting that particular array index from the array
my %hash = map {
$_ => "1"
} @input2;
delete $hash{$max};
print %hash;
print "\n";
@input2 = keys %hash;
print "***@input2 \n";
&recursive();
}
&recursive();
print "value is $count \n";
return $count;
}
get_order(3,1,2);
我在test.txt的線得到一個錯誤不能「最後」一個循環塊之外8.
看起來你」重新嘗試解決河內塔問題:http://hop.perl.plover.com/book/pdf/01RecursionAndCallbacks.pdf – Zaid
@Zaid:我從論壇「techgig」得到這些問題。想到解決這個問題。 :) – Nitesh
你應該避免嵌套子程序。最好使用匿名子例程。 –