【剑指Offer】10.斐波那契数列

题目

大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。

数据范围:1≤n≤40

要求:空间复杂度O(1),时间复杂度 O(n) ,本题也有时间复杂度 O(logn) 的解法

输入描述:

一个正整数n

返回值描述:

输出一个正整数。

示例1

输入:4

返回值:3

说明:根据斐波那契数列的定义可知,fib(1)=1,fib(2)=1,fib(3)=fib(3-1)+fib(3-2)=2,fib(4)=fib(4-1)+fib(4-2)=3,所以答案为3。

示例2

输入:1

返回值:1

示例3

输入:2

返回值:1

解答

源代码

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return int整型
     */
    public int Fibonacci (int n) {
        // write code here
        if (n == 1 || n == 2) {
            return 1;
        }

        return Fibonacci(n - 1) + Fibonacci(n - 2);
    }
}

总结

经典斐波那契数列,按照斐波那契函数计算就可以了。

你可能感兴趣的:(剑指Offer,算法,数据结构,java)