07斐波那契数列(Java)
2020-05-31 18:48
691 查看
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。
n<=39
解题思路
斐波那契数列第n项等于前两项之和。
- 使用循环方式求解。
- 使用递归(效率较低)。递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。
- 动态规划。
Java实现
- 循环方式
public class Solution { public int Fibonacci(int n) { if (n <= 1) return n; int pre1 = 0; int pre2 = 1; int fib = 0; for (int i = 2; i <= n; i++){ fib = pre1 + pre2; pre1 = pre2; pre2 = fib; } return fib; } }
- 递归方式(效率较低)
public class Solution { public int Fibonacci(int n) { if (n <= 1) return n; int fib = Fibonacci(n-1) + Fibonacci(n-2); return fib; } }
- 动态规划
public int Fibonacci(int n) { if (n <= 1) return n; int[] fib = new int[n + 1]; fib[1] = 1; for (int i = 2; i <= n; i++) fib[i] = fib[i - 1] + fib[i - 2]; return fib[n]; }
由于待求解的 n 小于 40,因此可以将前 40 项的结果先进行计算,之后就能以 O(1) 时间复杂度得到第 n 项的值。
public class Solution { private int[] fib = new int[40]; public Solution() { fib[1] = 1; for (int i = 2; i < fib.length; i++) fib[i] = fib[i - 1] + fib[i - 2]; } public int Fibonacci(int n) { return fib[n]; } }
相关文章推荐
- 07斐波那契数列–剑指offer, java版
- 07.斐波那契数列 Java
- Java基础_07
- 斐波那契数列java实现
- java实现斐波那契数列两种写法
- 算法--斐波那契数列--java
- 数据结构Java实现07----队列:顺序队列&顺序循环队列、链式队列、顺序优先队列
- java学习日记_29:面向对象之JDK帮助文档的使用。08.06至07
- Java多线程系列--“JUC锁”07之 LockSupport
- Java多线程系列--“JUC集合”07之 ArrayBlockingQueue
- 50道Java习题之07
- JAVA学习笔记-07
- java_集合体系之List体系总结、应用场景——07
- java 斐波那契数列
- Java实现-斐波那契数列
- java编程思想笔记07-复用类
- java笔记总结_07_多线程
- Code Hunt Sector 07 Strings 2 - Java
- java基础day06-07
- java io系列07之 FileInputStream和FileOutputStream