php递归增量

php递归增量,php,recursion,increment,Php,Recursion,Increment,我有这样一个数组: Array ( [0] => 0 [1] => 0 [2] => 0 ); 有3个元素(3个整数),我希望它们从0增加到36 我知道最好的方法是递归,因为必须检查每个元素是否达到最大值(36),如果达到最大值,则将最后一个元素设置为0,并递增前一个元素 所以我的阵列基本上是这样的: Array ( [0] => 0 [1] => 0 [2] => 0 ); Array ( [0] => 0 [1] => 0 [2] =>

我有这样一个数组:

Array ( [0] => 0 [1] => 0 [2] => 0 );
有3个元素(3个整数),我希望它们从0增加到36

我知道最好的方法是递归,因为必须检查每个元素是否达到最大值(36),如果达到最大值,则将最后一个元素设置为0,并递增前一个元素

所以我的阵列基本上是这样的:

Array ( [0] => 0 [1] => 0 [2] => 0 );
Array ( [0] => 0 [1] => 0 [2] => 1 );
Array ( [0] => 0 [1] => 0 [2] => 2 );
...
Array ( [0] => 0 [1] => 0 [2] => 36 );
Array ( [0] => 0 [1] => 1 [2] => 0 );
Array ( [0] => 0 [1] => 1 [2] => 1 );
....
Array ( [0] => 0 [1] => 1 [2] => 36 );
Array ( [0] => 0 [1] => 2 [2] => 0 );

ETC ETC ETC
但我不知道如何递归地做这件事

然而,该解决方案还需要对4个元素、5个元素和6个元素等进行处理


有人能给我一些指导吗?< /P> < P>如果你只想要一个BASE-37号,考虑使用它。

< P>如果你只想要一个BASE-37号,考虑使用它。

<代码>函数填充($LIMIT){ $ret=array(); 而($i
函数填充($limit){
$ret=array();
而($i
$limit=36;
$step=1;
$array=array(0,0,0);
函数增量(数组$array,$limit,$step){
$result=$array=array\u值($array);
while(count(数组_键($result,$limit))!=count($array)){
对于($i=1;$i
$limit=36;
$step=1;
$array=array(0,0,0);
函数增量(数组$array,$limit,$step){
$result=$array=array\u值($array);
while(count(数组_键($result,$limit))!=count($array)){
对于($i=1;$i这个呢

<?php
$arr = array(0=>0,2=>0);
foreach (range(0,36) as $f )
{
   echo "<pre>";print_r(array_pad(array($f),3,0));
   echo "<pre>";print_r(array_pad(array($f),-3,0)); 
   $arr_n = $arr+array(1=>$f);
   ksort($arr_n);
   echo "<pre>"; print_r($arr_n);
}

?>

这个怎么样

<?php
$arr = array(0=>0,2=>0);
foreach (range(0,36) as $f )
{
   echo "<pre>";print_r(array_pad(array($f),3,0));
   echo "<pre>";print_r(array_pad(array($f),-3,0)); 
   $arr_n = $arr+array(1=>$f);
   ksort($arr_n);
   echo "<pre>"; print_r($arr_n);
}

?>

与帖木儿的答案类似,但效率略高,基数可变


与帖木儿的答案类似,不过效率稍高一些,而且基数可变


这应该代表一个base-37数字吗?这应该代表base-37数字吗?base-convert的最大值为36??很好。这似乎是一个相当大的巧合…这是作业吗?base-convert的最大值为36??很好。这似乎是一个相当大的巧合…这是作业吗?这很完美!但是它从(0,0,0)-(0,0,36)正确,但在0,0,36之后,它将转到0,1,1而不是0,1,0…我如何修改它?哦…错误的
%
…编辑了我的帖子这是完美的!但是它从(0,0,0)-(0,0,36)开始正确,但是在0,0,36之后,它会转到0,1,1而不是0,1,0…我如何修改它?哦…错误的基础是
%
…编辑了我的文章
$limit = 36;
$step  = 1;
$array = array ( 0 , 0 , 0 );


function increment( array $array , $limit , $step )   {
    $result = $array = array_values( $array );
    while( count( array_keys( $result , $limit ) ) != count( $array ) ) {
        for( $i = 1 ; $i <= count( $result ) ; $i++ ) {
             while( $result[ count( $result )-$i ] < $limit )  {
                 $result[ count( $result )-$i ] += $step;
             }
        }
    }
    return $result;
}

var_dump( increment( $array , $limit , $step ) );
<?php
$arr = array(0=>0,2=>0);
foreach (range(0,36) as $f )
{
   echo "<pre>";print_r(array_pad(array($f),3,0));
   echo "<pre>";print_r(array_pad(array($f),-3,0)); 
   $arr_n = $arr+array(1=>$f);
   ksort($arr_n);
   echo "<pre>"; print_r($arr_n);
}

?>
$array = array(0, 0, 0);

function bloop(&$array, $amount, $base = 37)
{
    $i = count($array) - 1;
    while ($i >= 0) {
        $array[$i] = $amount % $base;
        $amount = ($amount - $array[$i--]) / $base;
    }
}

bloop($array, (37 * 37 * 2) + (37 * 5) + 8); // 2, 5, 8

var_dump($array);