例、php印刷杨辉三角。
-
-
$params=getParams(1); - $argv0=トリム($params[0]);
-
- if(!is_numeric($argv0))
- {
- error_msg("params 1 は数字である必要があります");
- }
$spaceNumber=6;
- $maxn=$argv0;
-
- output("",true);
- get_traangle($argv0);
- error_msg("実行成功");
-
- function get_trangle($n){
- if($n { // bbs.it-home.org
-
- return false;
- }
- if($n==1)
- {
- $this_level=array(1);
- print_line($this_level,$n);
- 配列(1)を返します;
- }
- if($n==2)
- {
- $this_level=array(1,1);
- print_line(array(1),1);
- print_line($this_level,$n);
- $this_level を返します;
- }
- $last_level=get_trangle($n-1);
- if(!is_array($last_level)||count($last_level) {
-
- return false;
- }
- $this_level=array();
- $this_level[0]=1;
-
- for($i=0;$i {
- $this_level[$i+1]=$last_level[$i]+$last_level[$i+1] ;
- }
- $this_level[]=1;
- print_line($this_level,$n);
- $this_level を返します;
- }
-
- function print_line($aArray,$n)
- {
- global $maxn,$spaceNumber;
- $line=sprintf("%".(($maxn-$n)*$spaceNumber/2)."s","");
- foreach($aArray as $i)
- {
- $line.=sprintf("%".$spaceNumber."s",$i);
- }
- 出力($line);
- }
-
- 関数 getParams($paramNum)
- {
- $in=file_get_contents("in.txt");
- if($in===FALSE){
- error_msg(".txt を読み取れません。.txt が存在することを確認してください。");
- }
- $in=preg_replace("/(s+)/i", " ", $in);
-
- $parms=split(" ",trim($in));
- if($parms===FALSE)
- {
- error_msg("in.txtn からパラメータを取得できません");
- }
- if(count($parms) < $paramNum)
- {
- error_msg("$paramNum paramsn が必要です");
- }
- $parms を返します。
- }
- //出力杨辉三角
- function Output($msg,$isClean=false)
- {
- if($isClean)
- {
- $handle = fopen('out.txt', 'w');
- fclose($handle);
- }
- error_log($msg."n", 3, "out.txt");
- }
-
- 関数 error_msg($msg,$is_exit=true)
- {
- if($is_exit)
- die($msg."n");
- else
- echo $msg."n";
- }
- ?>
复制發
|