【发布时间】:2012-08-21 19:41:40
【问题描述】:
function nonrecgen($min, $max, $amount) {
for($i=0;$i<$amount;$i++) {
$NrArray[$i] = rand($min,$max);
echo $NrArray[$i];
do {
for($j=0;$j<=$i;$j++) {
if ($NrArray[$j] == $NrArray[$i]) {
$NrArray[$i] = rand($min,$max); }
}
$Reccuring = false;
if ($i > 0) {
for($k=0;$k<=$i;$k++) {
if ($NrArray[$k] == $NrArray[$i]) {
$Reccuring = true; }
}
}
}
while ($Reccuring = true);
}
Return $NrArray;
}
$Test = nonrecgen(0,1,2);
print_r($Test);
我想研究如何生成一个非重复数字数组,虽然这肯定不是我认为最有效的方法,但我似乎无法弄清楚为什么它在第一次迭代时会无限循环。我一遍又一遍地尝试逻辑分析,但一定有我遗漏的东西。
【问题讨论】:
-
毕竟谁需要合理的缩进。
-
仅供参考,这称为无限循环。另外,@andrewsi 的解决方案是正确的。
-
@rdlowrey 确实......或者像a spelling checker这样的发明