原諒我(可能)愚蠢的問題,但我與此代碼(實際上是在一個更大的計劃的東西的模型)亂搞,什麼東西是扔我送行:全局變量自身復位子程序
sub recurse {
my $m = shift;
$g .= "::" . $m;
if ($m == 0) { return $g; }
else { $m--; recurse ($m); }
}
for ($i = 0; $i < 3; $i++)
{
my $g = '';
$str = recurse (10);
print $str . "\n";
}
'for'循環的第一次迭代正常工作。然而,在後續的迭代中,我遇到了一個問題。如你所見,在遞歸函數被調用之前,全局變量$ g在'for'循環中首先被重置。通過調試器,我可以看到在函數被調用之前,$ g被重新設置爲''。但是,一旦輸入了「遞歸」功能,它就會返回到先前的值。我在這裏錯過了什麼?
作爲一個推論,我不喜歡在這裏使用全局變量。如果沒有將$ g作爲recurse()的參數,那麼「正確」的方法是什麼?
*嘆*我想你是對的。我的懶惰似乎在咬我。我已經修復了代碼,我會在下面發佈它。 –