07斐波那契数列–剑指offer, java版
2019-03-01 13:39
260 查看
07斐波那契数列–剑指offer, java版
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。P75
n<=39
分析:
方法1:用递归
public class Solution { public int Fibonacci(int n) { if(n<=0) return 0; if(n == 1) return 1; return Fibonacci(n-1) + Fibonacci(n-2); } }
但是用递归的话,很多点会重复计算多次(如计算f(4)=f(3)+f(2),需f(3)=f(2)+f(1),又f(2)=f(1)+f(0),但其实f(3)、f(2)之前都已经算过了)时间复杂度太大。
方法2:从下往上计算,这样就不会计算多次了
public class Solution { public int Fibonacci(int n) { if(n < 0) { System.out.println("wrong input"); return 0; } if(n == 0) return 0; if(n == 1) return 1; int fibOne = 0; int fibTwo = 1; int fibNum = 0; for(int i = 2;i <= n; i++){ fibNum = fibOne + fibTwo; fibOne = fibTwo; fibTwo = fibNum; } return fibNum; } }
相关文章推荐
- 剑指offer-chapter2-面试题9-斐波那契数列(java)
- 剑指Offer面试题9(java版):斐波那契数列
- 《剑指offer》牛客网java题解-斐波那契数列
- JAVA实现斐波那契数列问题(《剑指offer》)
- 《剑指offer》编程题java实现(六):斐波那契数列系列问题
- 斐波那契数列-剑指Offer(Java语言)
- JAVA实现斐波那契数列问题(《剑指offer》)
- 剑指Offer(java版)斐波那契数列 ——1,1,2,3,5,8......
- 剑指Offer_07_斐波那契数列
- 剑指offer面试题10:斐波那契数列(Java 实现)
- Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)
- JAVA实现替换空格(《剑指offer》)
- 剑指offer-java(1)
- 剑指offer_09 斐波那契数列
- 剑指offer ——斐波那契数列
- [置顶] 剑指offer-010-斐波那契数列
- 剑指Offer——(7)斐波那契数列
- 剑指offer系列之7:斐波那契数列
- I007-黑马程序员_毕向东_Java基础视频教程第01天-07-Hello World
- Java集合-07Map接口及其抽象类