面试题17:打印从 1 到最大的 n 位数

<?php
header("content-type:text/html;charset=utf-8");
/*
 * 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数即 999。 P114
 */
function print1ToMaxOfNDigits($n){
    if($n<=0){
        return 0;
    }
    $length = $n;
    $number = array();
//    $number[$length] = '\0';
    while (!increment($number,$length)){
        printNumber($number,$length);
    }

}
function increment(&$number,$length){
    $isOverflew = false;
    $nTakeOver = 0;
    for($i = $length-1;$i>=0;$i--){
        $nSum = $number[$i] + $nTakeOver ;
        if($i == $length - 1){
            $nSum ++;
        }
        if($nSum >= 10){
            if($i == 0){
                $isOverflew = true;
            }
            else{
                $nSum = $nSum - 10;
                $nTakeOver = 1;
                $number[$i] = strval($nSum);
            }
        }
        else{
            $number[$i] = strval($nSum);
            break;
        }
    }
    return $isOverflew;
}

function printNumber($number,$length){
 //   $length = count($number);
    for($i=0;$i<$length;$i++){
        echo $number[$i];
    }
    echo ' ';
 //   var_dump($number)."</br>";
}

print1ToMaxOfNDigits(4);

猜你喜欢

转载自www.cnblogs.com/xlzfdddd/p/10162799.html