剑指offer--斐波那契数列--递归和循环

/**
 * 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
   n<=39
 */
package javabasic.nowcoder;
/*
 * 不是不能用递归,递归本质上是栈,可能导致栈溢出,只要避免溢出就可以了,就可以使用尾递归解
 * 迭代方法,用两个变量a和b分别记录fn-1和fn-2;
 */
public class Main10 {

	public static void main(String[] args) {
		System.out.println(Fibonacci(3));
	}
	
	public static int Fibonacci(int n) {
        int rs = 0, a = 0, b = 1;
        if(n == 0){
            return 0;
        }
        if(n == 1 || n == 2){
            return 1;
        }
        for(int i = 2; i <= n; i++){
            rs = a + b;
            a = b;
            b = rs;
        }
        return rs;
    }

}

  

posted @ 2018-04-16 17:23  dreamy_java  阅读(148)  评论(0编辑  收藏  举报