是否有正确的解决方案?

Eli*_*Eli 0 php fibonacci

在解决了一段时间以来我一直被束缚的编程挑战之后,我总是在想,"它有效,那就足够了".

在我看来,我认为这不是真正正确的思维模式,我认为我应该始终尝试以最佳性能进行编码.

无论如何,有了这个说,我刚试了一个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)

请注意,这不是作业.几百年前我离开了学校.我只是觉得无聊并且经历了项目欧拉问题

Cri*_*onX 7

在解决了一段时间以来我一直被束缚的编程挑战之后,我总是在想,"它有效,那就足够了".

在我看来,我认为这不是真正正确的思维模式,我认为我应该始终尝试以最佳性能进行编码.

Code Complete中提出的经典之一是,程序员可以使用众多指标之一创建"最佳"计算机程序,但不可能同时优化所有参数.参数如

  • 代码可读性
  • 对代码输出的可理解性
  • 代码长度(行)
  • 代码执行速度(性能)
  • 编写代码的速度

随意优化这些参数中的任何一个,但请记住,同时优化所有这些参数可能会令人沮丧,或导致系统过度设计.

你应该问自己:你的目标是什么?在这种情况下,什么是"足够好"?如果您只是在学习并希望更好地进行操作,那么请注意,完美的程序需要无限的时间来构建,而时间本身就是有价值的.