2

这个想法是获得我可以在 6/49 彩票上玩的所有可能组合。对于前 2 个数字,它有效。什么时候,我添加第三个数字的条件,它说: 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>";
            }
        }
    }
}
4

3 回答 3

1

在第一次迭代$i == $j时, so$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>";
        }
      }
    }
  }
}
于 2012-10-14T17:43:24.783 回答
0

当 $i == $j 时 $b 未定义。我想你只想在 $i != $j 时运行内部 for 循环。请注意,此问题通常通过函数递归来解决(然后您无需对 6 个数字进行硬编码)。

希望有帮助,

  • 约翰内斯
于 2012-10-14T17:41:17.897 回答
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);
          }
        }
      }
    }
  }
}
于 2012-10-14T17:46:30.070 回答