领扣算法入门------斐波纳契数列---js和java版

查找斐波纳契数列中第 N 个数。

所谓的斐波纳契数列是指:

  • 前2个数是 0 和 1 。
  • 第 i 个数是第 i-1 个数和第i-2 个数的和。

斐波纳契数列的前10个数字是:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...

样例

样例  1:
	输入:  1
	输出: 0
	
	样例解释: 
	返回斐波那契的第一个数字,是0.

样例 2:
	输入:  2
	输出: 1
	
	样例解释: 
	返回斐波那契的第二个数字是1.

注意事项

在测试数据中第 N 个斐波那契数不会超过32位带符号整数的表示范围

js语言

/**
 * @param n: an integer
 * @return: an ineger f(n)
 */
const fibonacci = function (n) {
    if(n==1){
       return 0; 
    }
    if(n==2){
        return 1;
    }
    var num1= 0,num2= 1,sum;
    for(var i = 3; i <= n; i++) {
        sum = num1 + num2;
        num1 = num2;
        num2 = sum;
    }
    return sum;
    
    
    //超时
    /*if(n==1){
       return 0; 
    }
    if(n==2){
        return 1;
    }
    return fibonacci(n-1)+fibonacci(n-2);*/
}

分析:使用递归如果数字过大会超时,非递归方式在数字大时耗时较少。

java语言

public class Solution {
    /**
     * @param n: an integer
     * @return: an ineger f(n)
     */
    public int fibonacci(int n) {
        // write your code here
        if(n==1){
             return 0; 
        }
        if(n==2){
            return 1;
        }
        int num1= 0;
        int num2= 1;
        int sum=0;
        for(int i = 3; i <= n; i++) {
            sum = num1 + num2;
            num1 = num2;
            num2 = sum;
        }
        return sum;
    }
}

分析:js中sum不用初始化,java中需要初始化。

注释:js是弱类型语言,使用变量并不要求一定要初始化,运行的时候,代码会自动转换并赋值。但是这样做会引起一些意想不到的问题,因此,对所有使用到的变量进行初始化,是非常有必要的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wcc_Learning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值