在解决了一段时间以来我一直被束缚的编程挑战之后,我总是在想,"它有效,那就足够了".
在我看来,我认为这不是真正正确的思维模式,我认为我应该始终尝试以最佳性能进行编码.
无论如何,有了这个说,我刚试了一个ProjectEuler问题.具体问题#2.
我怎么能改进这个解决方案.我觉得它真的很冗长.就像我在递归中传递前一个数字一样.
<?php
/* Each new term in the Fibonacci sequence is generated by adding the previous two
terms. By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
Find the sum of all the even-valued terms in the sequence which do not exceed
four million.
*/
function fibonacci ( $number, $previous = 1 ) {
global $answer;
$fibonacci = $number + $previous;
if($fibonacci > 4000000) return;
if($fibonacci % 2 == 0) {
$answer = is_numeric($answer) ? $answer + $fibonacci : $fibonacci;
}
return fibonacci($fibonacci, $number);
}
fibonacci(1);
echo $answer;
?>
Run Code Online (Sandbox Code Playgroud)
请注意,这不是作业.几百年前我离开了学校.我只是觉得无聊并且经历了项目欧拉问题
在解决了一段时间以来我一直被束缚的编程挑战之后,我总是在想,"它有效,那就足够了".
在我看来,我认为这不是真正正确的思维模式,我认为我应该始终尝试以最佳性能进行编码.
Code Complete中提出的经典之一是,程序员可以使用众多指标之一创建"最佳"计算机程序,但不可能同时优化所有参数.参数如
随意优化这些参数中的任何一个,但请记住,同时优化所有这些参数可能会令人沮丧,或导致系统过度设计.
你应该问自己:你的目标是什么?在这种情况下,什么是"足够好"?如果您只是在学习并希望更好地进行操作,那么请注意,完美的程序需要无限的时间来构建,而时间本身就是有价值的.
| 归档时间: |
|
| 查看次数: |
299 次 |
| 最近记录: |