剑指offer 7:斐波那契数列-- Java实现

剑指offer每日一题算法题(java解法)

方便日后复习,从今天开始。

算法之行始于足下

[编程题]斐波那契数列-- Java实现

------------------------------------------------------------------------------------------------------
题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39

解题思路:
1.了解了斐波那契数列的规律,前两项相加,第一项为0,第1项为1;

拿到这题看了下,不是很难却首先选择用递归方法来写,不是很推荐,结尾会讲。

递归代码

public class Solution {
    public int Fibonacci(int n) {
        if(n>=0&&n<=1)
            return n;
        else{
            n=Fibonacci(n-1)+Fibonacci(n-2);
        }
        return n;
    }
}

个人推荐第二种解题,用循环解题

解题思路:
1.用2个值存住前两项的值,随着循环,再把前两个值变为最新的前面两个值

public class Solution {
    public int Fibonacci(int n) {
        int tmp1=0,tmp2=1,tmp3=0;
        if(n>=0&&n<=1)
            return n;
        else{
            for(int i=2;i<=n;i++){
                tmp3=tmp1+tmp2;
                tmp1=tmp2;
                tmp2=tmp3;
            }
        }
        return tmp3;
    }
}

总结:

这里说明循环比递归好

  1. 递归用的内存比循环多
  2. 计算时间循环快,因为递归存值用到栈,需要花时间寻找出口.
发布了52 篇原创文章 · 获赞 10 · 访问量 1549

猜你喜欢

转载自blog.csdn.net/jiohfgj/article/details/103002417