小渣渣的算法学习笔记:2018秋招备战
数据结构类算法总结:递归和循环
数据结构类算法总结:递归和循环
1.题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39 不要使用递归,调用栈存在内存溢出的风险 使用循环是最实用的解法
2.思路解析:
经典的递归案例。用不同的方法求解斐波那契数列的时间效率大不相同。基于递归的解法虽然直观但是时间效率很低。
使用循环实现可以极大提高时间效率,因为避免了递归中大量的重复计算,保存了数列中间项
3.代码实现:
public class Solution07 { public static void main(String[] args) { Solution07 s = new Solution07(); int t1 = s.fibonacci(10); int t2 = s.Fibonacci(10); System.out.println(t1); System.out.println(t2); } public int Fibonacci(int n) { if(n==1||n==2) return 1; if(n<0) return 0; return Fibonacci(n-1)+Fibonacci(n-2); } public int fibonacci(int n){ int a = 1,b = 1; int c = 0; if(n <= 0) return 0; if(n == 1 || n == 2) return 1; for(int i = 3;i<= n;i++){ c = a+b; a = b; b = c; } return c; } }