再帰関数を使ってフィボナッチ数列を出力してみた

はてなブックマーク - 再帰関数を使ってフィボナッチ数列を出力してみた
このエントリーをはてなブックマークに追加
Share on Facebook

ちょっと思うところがあり、タイトルをphpで書いてみた。

フィボナッチ数についてはこちら

数学をかじっている人や理系の人にとっては当たり前の知識らしい。

実際のページはこちら→再帰関数でフィボナッチ数を取得

こういったものを作るのも、パズルを解くみたいでなかなか面白いです。

ついでにソースも載せておきます。

(ソースを修正しました→こちら

<?php
$f['1']=1;
$f['2']=1;
$limit=$_GET['i'];
$i=3;
if(!(preg_match('/\\d/',$limit)) or $limit<1){
	$result='1以上の整数を入力してください';
}else{
	f($i);
}
function f($i){
	global $f;
	global $limit;
	global $result;
	//1か2が渡された場合は1を返す
	if($limit<3){
		$result=$f[$limit];
		return;
	}
	$f[$i]=$f[$i-1]+$f[$i-2];
	$i++;
	if($i>$limit){
		$result=$f[$i-1];
		return;
	}else{
		f($i);
	}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
 <head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>再帰関数でフィボナッチ数を取得</title>
<style>
<!--
-->
</style>
<script type="text/javascript"><!--
// --></script>
</head>
<body>
	<h1>再帰関数でフィボナッチ数を取得</h1>
	<p>何番目のフィボナッチ数を取得しますか?</p>
	<form method="get" action="./">
		<input type="text" value="" name="i" />
		<input type="submit" value="送信" />
	</form>
	<p style="margin-top:2em"><?=$result?></p>
</body>
</html>

コメントをどうぞ

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">