我的想法是在6/49抽奖中获得所有可能的组合。
对于前两个数字,它的工作原理。何时,我为第三个数字添加条件:Undefined variable: b
。我不明白为什么。我在那里用echo来检查程序是否正常工作。
这是代码。
for ($i=1 ; $i<50 ; $i++)
{
$a=$i;
for ($j=1 ; $j<50 ; $j++)
{
if ($i!=$j)
{
$b=$j;
}
for ($k=1 ; $k<50 ; $k++)
{
if ($k!=$j && $k!=$i)
{
$c=$k;
echo "$a $b $c<br>";
}
}
}
}
答案 0 :(得分:1)
在第一次迭代$i == $j
上,永远不会初始化$b
。您可以通过扩展if
来覆盖内部循环来修复它:
for ($i=1 ; $i<50 ; $i++)
{
$a=$i;
for ($j=1 ; $j<50 ; $j++)
{
if ($i!=$j)
{
$b=$j;
for ($k=1 ; $k<50 ; $k++)
{
if ($k!=$j && $k!=$i)
{
$c=$k;
echo "$a $b $c<br>";
}
}
}
}
}
答案 1 :(得分:0)
$ b未定义。我想你只想在$ i!= $ j时运行内部for循环。请注意,此问题通常通过函数递归来解决(然后您不需要对6个数字进行硬编码)。
希望有所帮助,
答案 2 :(得分:0)
为什么不使用6个嵌套for循环....
我没有得到你正在使用的语言,所以我会把它放在一些伪代码中......
for (a=1; x<50-5; a++){
for (b=a+1; x<50-4; b++){
for (c=b+1; x<50-3; c++){
for (d=c+1; x<50-2; d++){
for (e=d+1; x<50-1; e++){
for (f=e+1; x<50; f++){
print (a,b,c,d,e,f);
}
}
}
}
}
}