2011-06-09 39 views
0

的問題是這樣的:斐波納契問題#2從項目歐拉用PHP

在Fibonacci序列中的每個新名詞是通過將前兩個方面產生。通過>與圖1和2開始,第一10項將是:

1,2,3,5,8,13,21,34,55,89,...

通過考慮術語在Fibonacci序列中,其值不超過400萬,>找到偶數項的和。

這是我在PHP

寫道
<?php 
function fibo($first, $second, $limit){ 
    $next = $first + $second; 
    if ($next % 2 ==0) { 
    $array[]= "$next"; 
    } 

    do 
    { 
    fibo($second,$next, $limit); 
    } while ($next < $limit); 

    $sum=array_sum($array[]); 
    echo "$sum"; 
} 
fibo(1,2,4000000); 
?> 

我的代碼不運行,雖然...誰能幫助?

+3

您的代碼是否產生錯誤信息或錯誤輸出或者什麼都沒有?請指定*不運行*的含義。 – Waldheinz 2011-06-09 09:39:01

+0

請爲了上帝的愛而格式化您的代碼,以便我們可以讀取它。 – 2011-06-09 09:47:32

回答

2

嘗試改變$sum=array_sum($array[]);$sum=array_sum($array);,看看它發生......

此外,當你有問題,這是很好的讓別人知道它是什麼樣的問題。像錯誤信息或類似的東西...

如果有任何機會,沒有errors reported, try to turn them on

編輯:
我記得,當遞歸地解決一些歐拉問題時,我遇到了頁面崩潰的問題。 This may happen due to some recursion limitations。我相信它和你的問題很相似。

+0

非常感謝您,您可能會因爲代碼在Chrome上導致出現「HTTP錯誤500(內部服務器錯誤)」的服務器錯誤消息:服務器試圖完成請求時遇到意外情況。 Firefox上沒有錯誤消息。我會嘗試打開error_reporting,看看它說什麼。對格式化抱歉!我的錯! – nubicurio 2011-06-09 09:58:45

1

這是一個簡單的範圍問題。你在函數中定義$array,你不能在外面使用它。嘗試使用全局數組:

function fibo($first, $second, $limit) { 
    //... 
    $GLOBALS[array[]] = $next; 
} 

您將可以在外部使用它。

+0

我不知道我明白...你的意思是我不能在其功能之外引用$數組?但它從來沒有被引用到它的功能之外呢? – nubicurio 2011-06-09 17:35:52

+0

@nubicurio是的,你做了,像第13行:'$ sum = array_sum($ array []);' – SteeveDroz 2011-06-10 07:03:27