剑指offer之面试题9:斐波那契数列

题目描述

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

思路:递归解法很简单

public class Solution {
    public static int Fibonacci(int n) {
        return n<=1?n:(Fibonacci(n-1)+Fibonacci(n-2));
    }
    public static void main(String[] args){
        int n=10;
        System.out.println(Fibonacci(n));
    }
}

在牛客网提交会提示运行超时,递归在效率上不可取,里面包含很多重复计算。

通过循环方式解决。可以先求出f1,f2,根据f3=f1+f2,得到f3,然后把f2的值赋值给f1,f3的值赋值给f2,…,循环下去,直到fn,
牛客网提交成功的代码:

public class Solution {
    public static int Fibonacci(int n) {
        //return n<=1?n:(Fibonacci(n-1)+Fibonacci(n-2));
        if(n<=1)return n;
        int fibOne=0;
        int fibTwo=1;
        int result=0;
        for(int i=2;i<=n;i++){
            result=fibOne+fibTwo;
            fibOne=fibTwo;
            fibTwo=result;
        }
        return result;
    }

    public static void main(String[] args){
        int n=10;
        System.out.println(Fibonacci(n));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值