2016年12月24日土曜日

PHP/再帰処理関数

for文ばかり書くのも芸がないので、滅多に書かない再帰処理を関数で書いてみました。
お題は、「ある数の対数log2を求める」です。
配列の要素数の上限見ていたら、「これ何bitやっけ?」と思ったのがお題のきっかけです。


<?php
function devide($target)
{
    return $target / 2;
}
$target = 4294967296;
$count = 0;
while ($target > 1) {
    $target = devide($target);
    $count++;
} 
echo $count;
?>

再帰処理関数
<?php
function hoge(&$target, &$count) {
  if ( $target > 1 ) {
    $count++;
    $target/=2;
    hoge($target, $count);
  } 
  return $count;
}
$target = 4294967296;
$count  = 0;
echo hoge($target, $count);
?>

下記のブログエントリーを参考にさせていただきました。
by shigemk2 「PHPで再帰関数を作る」

0 件のコメント:

コメントを投稿