java斐波那契数列的顺序输出
程序员文章站
2022-06-09 13:02:52
斐波那契数列,即1、1、2、3、5......,从第三个数开始包括第三个数,都为这个数的前两个数之和,而第一第二个数都为1。 下面是java输出斐波那契数列的代码: 输出结果为: 这里最重要的是把已经计算过的值保存起来,再次遇到该值时直接返回,才不会重复计算,从而使得程序运行效率更高,也保证输出结果 ......
斐波那契数列,即1、1、2、3、5......,从第三个数开始包括第三个数,都为这个数的前两个数之和,而第一第二个数都为1。
下面是java输出斐波那契数列的代码:
import java.util.hashmap; public class test{ //定义一个hashmap来存储已经计算并且输出过的值 public static hashmap<integer, integer> hashmap = new hashmap<integer,integer>(); //递归方法 public static int digui(int num) { //判断这个值是否已存在,若存在则直接返回该值 if(hashmap.containskey(num)) { return hashmap.get(num); } if(num<=2) { system.out.print(1+" "); hashmap.put(num, 1); return 1; } int sum = digui(num-1)+digui(num-2); system.out.print(sum+" "); hashmap.put(num, sum); return sum; } public static void main(string [] args){ digui(10); } }
输出结果为:
1 1 2 3 5 8 13 21 34 55
这里最重要的是把已经计算过的值保存起来,再次遇到该值时直接返回,才不会重复计算,从而使得程序运行效率更高,也保证输出结果不会重复。
其实斐波那契数列也可以不用递归来输出,或者说递归的效率反而不高,只不过这个知识点一直是用来练习递归的,所以这里我也就采用递归来输出,但是加了个缓存的hashmap,所以效率比一般的递归还是要快很多。
斐波那契数列别的输出方式输出代码如下:
import java.util.hashmap; public class test{ public static void print(int num) { //第一个数 int first = 1; //第二个数 int second = 1; //接收下一个数 int sum = 0; for(int i = 1;i<=num;i++) { if(i==1 || i==2) { system.out.print(1+" "); }else { sum = first + second; system.out.print(sum+" "); first = second; second = sum; } } } public static void main(string [] args){ print(10); } }
输出结果如下:
1 1 2 3 5 8 13 21 34 55
第二种方法时间复杂度只有o(num),效率还是非常高的。斐波那契数列还有很多其他的输出方式,这里只是讲几个实现的方法,就不一一列举其他的了。
上一篇: 花菜的品种与功效都有哪些呢
下一篇: 含碱性的食物有哪些