私は楽しみのために私自身の正弦関数の実装をプログラムしようとしているが、私は入れません:PHP「最大実行時間」
Fatal error: Maximum execution time of 30 seconds exceeded
私はあなたがの「X」の値を入力することができ、小さなHTMLフォームを持っていますあなたが探しているSin(x)とあなたが計算したい "反復"の数(あなたの価値の精度)、残りはPhPです。 数学は、Wikipediaのサインの「シリーズの定義」をベースとしている: - >http://en.wikipedia.org/wiki/Sine#Series_definition ここに私のコードです:
<?php
function factorial($int) {
if($int<2)return 1;
for($f=2;$int-1>1;$f*=$int--);
return $f;
};
if(isset($_POST["x"]) && isset($_POST["iterations"])) {
$x = $_POST["x"];
$iterations = $_POST["iterations"];
}
else {
$error = "You forgot to enter the 'x' or the number of iterations you want.";
global $error;
}
if(isset($x) && is_numeric($x) && isset($iterations) && is_numeric($iterations)) {
$x = floatval($x);
$iterations = floatval($iterations);
for($i = 0; $i <= ($iterations-1); $i++) {
if($i%2 == 0) {
$operator = 1;
global $operator;
}
else {
$operator = -1;
global $operator;
}
}
for($k = 1; $k <= (($iterations-(1/2))*2); $k+2) {
$k = $k;
global $k;
}
function sinus($x, $iterations) {
if($x == 0 OR ($x%180) == 0) {
return 0;
}
else {
while($iterations != 0) {
$result = $result+(((pow($x, $k))/(factorial($k)))*$operator);
$iterations = $iterations-1;
return $result;
}
}
}
$result = sinus($x, $iterations);
global $result;
}
else if(!isset($x) OR !isset($iterations)) {
$error = "You forgot to enter the 'x' or the number of iterations you want.";
global $error;
}
else if(isset($x) && !is_numeric($x)&& isset($iterations) && is_numeric($iterations)) {
$error = "Not a valid number.";
global $error;
}
?>
私のミスは、おそらく、この行で無限ループから来ている:
$result = $result+(((pow($x, $k))/(factorial($k)))*$operator);
しかし、私は問題を解決する方法を知らない。 私はこのラインで行うことトリングてることは計算することです:
((pow($x, $k))/(factorial($k)) + (((pow($x, $k))/(factorial($k)) * ($operator)
反復:
+ (((pow($x, $k))/(factorial($k)) * $operator)
回の "$イテレーション" 量 "の$ I" さんと「$ kのそれに応じて値が変化します。
私は本当にここにこだわっています!少しの助けが必要になるでしょう。前もって感謝します !
Btw:階乗関数は私のものではありません。私はPhP.netのコメントでそれを見つけました。明らかに、それは最適な階乗関数です。
[docs](http://php.net/global)をグローバルに読むことをお勧めします。あなたはすべての変数をグローバルに宣言する必要はありませんし、それをやっているやり方はとにかく助けにならないでしょう。 –