LoginSignup
0

More than 5 years have passed since last update.

PHPでフィボナッチ数列を実装

Last updated at Posted at 2018-06-21

PHPでフィボナッチ数列を実装してみました。

fb1の方は、再帰処理になっているが、再帰によって呼び出しされた時に
配列に入れる事によって処理が重くなりすぎる点を考慮したもの。

fb2の方は、何も考えずに再帰処理で行ったもの。



<?php
$max_num= trim(fgets(STDIN));
if( !($max_num + 0 > 3) ){
        $max_num = 5;
}

$num = 0;
$array = null;
echo "##### fb1 #####". PHP_EOL;
$time_start = microtime(true);
print_r(fb1($array,$num,$max_num));
echo PHP_EOL;
echo microtime(true) - $time_start ,"s". PHP_EOL;
echo PHP_EOL;
/*
echo "##### fb2 #####". PHP_EOL;
$time_start = microtime(true);
print_r( fb2($max_num) );
echo PHP_EOL;
echo microtime(true) - $time_start ,"s". PHP_EOL;
echo PHP_EOL;
*/
function fb1($array,$num,$max_num) {
        if( $num > $max_num ) {
                return $array;
                exit;
        }
        if( !isset($array[$num-1]) || !isset($array[$num-2])) {
                $array[] = 1;
        } else {
                $array[] = $array[$num-1] + $array[$num-2];
        }
        return fb1($array,$num+1,$max_num);
}

function fb2($n){
        if ($n < 2) return $n;
        return fb2($n - 2) + fb2($n - 1);
}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0