今天,公司的一个笔试题,就是根据循环或则递归的方式实现菲波拉切,其实这个题也是比较简单的。
我们可以看看菲波拉切数的规律
1 1 2 3 5 8 13 21 … 查看数列可以知道 第一第二位的是1 ,之后的每一位都是前一位和前2位相加的和
所以规律也比较简单,下面直接贴上我的解题代码吧
1.递归方式
public static int cacular(int n ){
if(n==1||n==2){
return 1;
}else{
return cacular(n-1)+cacular(n-2);
}
}
public static void main(String[] args) {
for (int i =1;i<=20;i++){
System.out.printf("%d ",cacular(i));
}
}
2.循环方式
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i =0;i<20;i++){
if(i==0||i==1){
list.add(1);
}else{
list.add(list.get(i-1)+list.get(i-2));
}
}
list.forEach(System.out::println);
}
当然,如果强大的博友们还有更好的办法,不访评论贴上你们的想法,也让我涨涨知识