0

私はこのような機能を持っています:

function test($T0){
  $T01 = $T0-$T0/2;
  $T02 = $T0+$T0/2;
  if($T01<$T0){
    test($T01);
  } else if($T02<$T0){
    test($T02);
  } else {}
  $result = array($T01,$T02);
    return $result;
  }

  $T0 = 50;
  $result = test($T0);
  echo $result[0];

この関数が再帰でないのはなぜですか?

4

5 に答える 5

2

再帰を理解するには、再帰を理解する必要があります

ifs で値を返すのを忘れています。

適切なコード:

<?php
 function test($T0){
   $T01 = $T0-$T0/2;
   $T02 = $T0+$T0/2;
   if($T01 < $T0) return test($T01);
   else if($T02 < $T0) return test($T02);
   else return array($T01,$T02);
 }

 $T0 = 50;
 $result = test($T0);
 echo $result[0];
 ?>
于 2013-07-02T13:01:22.523 に答える
0

コードをデバッグすると:

最初の状態では$T01、毎回ゼロになります。そして、それは最初の条件に到達し、再び関数を呼び出し、その時点でゼロ値を渡します。したがって、$T01 と $T02 の値は 2 回目でゼロになり、else 状態になります。したがって、この関数は再帰しなくなります。

于 2013-07-02T12:58:55.653 に答える
0

コードは再帰のみですが、t01 の値は常に t02 より小さいため、無限ループに入ります

于 2013-07-02T12:59:50.793 に答える