斐波那契Java实现

斐波那契数列Java实现

public class Fib1 {
//递归
public static int fib1(int n){
if (n < 2){return n;} //fib1(0)、fib1(1)
return fib1(n-1) + fib1(n-2);//fib1(2)=fib1(0)+fib1(1)=1.....
}
}
import java.util.HashMap;
import java.util.Map;
public class Fib2 {
//记忆化,采用缓存技术,比如,人可以从常识获得答案,或可以计算获得答案
//这里,采用Map实现,Map.of()为java9的新方法,为初始化map集合
//static Map<Integer,Integer> memo = new HashMap<>(Map.of(0,0,1,1));
static Map<Integer,Integer> memo = new HashMap<>();
public static int fib2(int n){
memo.put(0,0);
memo.put(1,1);
if (!memo.containsKey(n)){
memo.put(n,fib2(n-1) + fib2(n-2));
}
return memo.get(n);
}
}
public class Fib3 {
//正向迭代方法
public static int fib3(int n){
int last =0;//fib3(0)
int next =1;//fib3(1)
for (int i = 0;i<n;i++){
int oldLast = last;
last = next;
next = oldLast +last;
}
return last;//fib3(2)=1 fib3(3)=2...
}
}
import java.util.stream.IntStream;
public class Fib4 {
//使用流来生成
//会一个一个输出每一个菲薄数列元素
private int last = 0;
private int next = 1;
public IntStream stream(){
return IntStream.generate(() ->{
int oldLast = last;
last = next;
next = oldLast + next;
return oldLast;
});
}
public static void main(String[] args) {
Fib4 fib4 = new Fib4();
fib4.stream().limit(40).forEachOrdered(System.out::println);
}
}
posted @   gdxstart  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示