通过编程实现逻辑实现的初学者所以请找到我对项目Euler Ques的诚实努力,虽然我尝试了各种尝试解决但无法通过它:(
我从中得到的结果是 - 257112
。我在总和中添加了+2来计算系列中的a[1] = 2
,但它不起作用,我目前正在为45
传递静态值$num
,但我认为它不是正确的方法,让我知道我在这个问题的逻辑上滞后。
Fibonacci序列中的每个新术语都是通过添加 前两个任期。从1和2开始,前10个术语将 是:
1,2,3,5,8,13,21,34,55,89,......
考虑Fibonacci序列中的值,而不是 超过四百万,找到偶数值的总和。
这是我试过的代码 - >
$a = array();
$a[0] = 1; $a[1] = 2; $num = 45; $i= 0; $sum = 0; $stop = $num -2;
for($i; $i < $stop ; $i++ ) {
$a[$i+2] = $a[$i+1] + $a[$i];
if( $a[$i+2]%2 == 0 && $a[$i+2] <= 400000 )
{
$sum += $a[$i+2];
}
}
echo "<pre>";
print_r($a);
echo "<br>"."Sum is : ".$sum;
编辑 - 添加额外的零以使其达到400万是一个错误,虽然我正在寻找$ num的东西不是静态的(因为45我刚才随机提到,虽然它的工作但它不是一个干净的解决方案)
答案 0 :(得分:4)
简单,没有阵列,快速。你只是在寻找总和,没有别的:
$a=1;$b=2;$sum=2;
while($b<4000000){
$c=$b+$a;
if($c%2==0)
$sum+=$c;
$a=$b;
$b=$c;
}
echo $sum;
如果计算4,000,000,那么它将是$b<=4000000
答案 1 :(得分:1)
<?php
$f0=0;/* declaring variables */
$f1=1;
$f2=0;
$n=0; /* the series range */
while($n<20)
{
$f2=$f0+$f1;
echo $f2."<br>";
$f0=$f1;
$f1=$f2;
$n++;
}
?>
答案 2 :(得分:1)
<?php
$f0=0;/* declaring variables */
$f1=1;
$f2=0;
$n=0; /* the series range */
while($n < $stop){
$f2=$f0+$f1;
$temp[] = $f2;
$f0=$f1;
$f1=$f2;
$n++;
}
var_dump($temp);
?>
您可以查看相同的示例here
答案 3 :(得分:0)
这很简单:
$prev = 0;
$curr = 1;
$next = 1;
for ($i=0; $i <= 10; $i++) {
$prev = $next;
$curr = $i;
$next = $prev + $curr;
echo $next.'<br/>';
}
答案 4 :(得分:0)
Try this:
function fibonacci_series($n) {
$f1 = -1;
$f2 = 1;
for ($i = 1; $i <= $n; $i++) {
$f = $f1 + $f2;
$f1 = $f2;
$f2 = $f;
echo "$f<br />";
}
}
echo fibonacci_series(5);