20080921

面試題

寫一個函數計算當參數為 n(n很大) 時的值 1-2+3-4+5-6+7……+n

想想後再看答案吧^^







<?php
/*
1-2+3-4+5-6+7.....+n
*/
$n=5001;
echo
fn_1($n);
echo
"<hr>";
echo
fn_2($n);

//直覺式
function fn_1($n)
{
if(
$n <= 0)
{
echo
"error: n moust > 0";
exit();
}
$temp = 0;
$flag = 1;
for(
$i=1;$i<=$n;$i++)
{
$temp = $temp + $i*$flag;
$flag = (-1)*$flag;
}
return
$temp;
}

//數學式
function fn_2($n)
{
if(
$n <= 0)
{
echo
"error: n moust > 0";
exit();
}
if(
0 == $n%2) return ($n/2)*(-1);
else return (
$n/2-0.5)*(-1)+$n;
}

show_source("think_1.php");
?>

沒有留言: