1

再帰を使用して数値の値を減らして別の数値に等しくしていますが、得られた結果は空白で、エラーを見つけることができません。

$A = 40;
$B = 130 ;

function Equalize( $A , $B ) {
    if (   $B  -   $A   >= 30 ) {
        $Start = $A + 30 ;
        Equalize($Start , $B );
    }
    else {
       //if I place- echo 'A='.$A; here;
       // then it echoes : A=130.but **return** doesn't works....???       
       return $A;        
    }
}

$Result  = Equalize( $A , $B );
 echo 'Final Result ='.$Result ; //here it shows result as empty

アップデート

$A = 40;
$B = 130 ;

function Equalize( $A , $B ) {
    if (   $B  -   $A   > 30 ) {
        $Start = $A + 30 ;
        Equalize($Start , $B ); **DO I NEED 'return' HERE TOO before function call ????**   
    }         
    else {
        //if I place- echo 'A='.$A; here;
        // then it echoes : A=100.but **return** doesn't works....???
        return $A;            
    }
}       
$Result  = Equalize( $A , $B );
echo 'Final Result ='.$Result ; //here it shows result as empty
4

2 に答える 2

3

Equalize($Start , $B );withinの最初の呼び出しでは、単に関数を呼び出すのではなくEqualize、関数の呼び出しを返すようにEqualizeします。

 $Start = $A + 30;
 return Equalize($Start , $B );
于 2012-10-07T14:54:20.973 に答える
2

あなたのifブロック変更で

Equalize($Start , $B );

return Equalize($Start , $B );

ブロックから明示的に何も返さずif、結果としてnull が返されるためです。

于 2012-10-07T14:55:14.607 に答える