黑马程序员技术交流社区

标题: 代码优化 [打印本页]

作者: hanrongle    时间: 2013-8-7 22:07
标题: 代码优化
斐波那契数列
  1. import java.util.*;
  2. import java.io.*;

  3. public class Fibonacci
  4. {
  5. public static void main(String[] args) throws IOException
  6. {
  7. Scanner in=new Scanner(System.in);
  8. long num = Fib(in.nextInt());
  9. System.out.println(num);
  10. }

  11. public static long Fib(int n){
  12. if(n<3)
  13. return 1;
  14. else
  15. return Fib(n-1)+Fib(n-2);
  16. }
  17. }
复制代码
上述代码,是关于斐波那契数列计算问题的,如果输入的数较大的话,计算速度会非常慢,像输入60,就会停滞在控制台不懂。该代码如何优化?


作者: 谢铭    时间: 2013-8-7 23:07
可惜还在北京传智上基础班,还没有讲到这块的内容,冯佳老师今天上课的时候,也提到了这个问题,但是还没有学习,只能过段时间再提这个了。
作者: 赖龙威    时间: 2013-10-2 00:50
  1. import java.util.Scanner;


  2. public class test {
  3.         public static void main(String[] args) {
  4.                 int temp = 0;
  5.                 int a = 0, b = 1;
  6.                 Scanner scanner = new Scanner(System.in);
  7.                 int num = scanner.nextInt();
  8.                 if (num == 0) {
  9.                         System.out.println(0);
  10.                 }
  11.                 for (int i = 2; i < num ; i++) {
  12.                         temp = a;
  13.                         a = b;
  14.                         b += temp;
  15.                 }
  16.                 System.out.println(b);
  17.         }
  18. }
复制代码
递归的方法实在太消耗系统资源了。时间开销和空间开销都好大。最好的解决办法是不用递归。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2