首页 > 试题广场 >

斐波那契数列

[编程题]斐波那契数列
  • 热度指数:45386 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
用 JavaScript 实现斐波那契数列函数,返回第n个斐波那契数。 f(1) = 1, f(2) = 1 等
function fibonacci(n) {
    if(n<0){
        return -1;
    }else if(n < 2){
        return n;
    }else{
       return arguments.callee(n-1) +  arguments.callee(n-2); 
    }
}
一个递归完事儿,装逼写法=。=
发表于 2016-08-24 15:41:19 回复(2)
哈哈,看来这个是最原始的方法了。
function fibonacci(n) {
    var x = 1, //第一项
        y = 1, //第二项
        z = 0; //和
    
    if(n==1){
        return 1;
    }else if(n==2){
        return 1;
    }
    else{ 
        for(var i=1; i<n-1;i++){
            z = x + y;
            x = y;
            y = z;
        }
        return y;
    }
    
}

发表于 2016-08-24 22:22:37 回复(1)
function fibonacci(n) {
    if(n < 1) return -1;
    let a = 1;
    let b = 1;
    for(let i = 2; i < n; i++) {
        b = a + b;
        a = b - a;
    }
    return b;
}

发表于 2022-03-26 17:02:06 回复(0)
function fibonacci(n) {
    if(n===1 || n===2) return 1
    let pre = 1
    let cur = 1
    let sum = -1
    for(let i=3;i<=n;i++){
       sum = pre+cur
        pre = cur
        cur = sum
    }
    return sum
}
dp做法。
发表于 2021-08-24 08:07:39 回复(0)
function fibonacci(n) {
    switch (n) {
        case 0:
        case 1:
            return n
        default:
            return fibonacci(n - 1) + fibonacci(n - 2)
    }
}

发表于 2021-08-01 12:02:59 回复(0)
function helper(i, a, b, c) {
    return i === 0 ? a : helper(i - 1, b, c, b + c);
}

function fibonacci(n) {
    return helper(n, 0, 1, 1);
}

O(N)递归

发表于 2020-06-05 17:25:21 回复(0)
function fibonacci(n) {
if((n==1)||(n==2)){
return 1;
}else{
return arguments.callee(n-2)+arguments.callee(n-1);
}
}
编辑于 2019-06-07 22:30:03 回复(0)
function fibonacci(n) {
    if (n <= 2) {
        return 1;
    }
    var a = new Array(n+1);
    a[1] = 1;
    a[2] = 1;
    for (var i = 3; i < n+1; i++) {
        a[i] = a[i-2] + a[i-1];
    }
    return a[n];
}

发表于 2019-05-15 15:05:18 回复(0)

function fibonacci(n, ac1 = 1, ac2 = 1) {    if(n === 1 || n === 2){  return ac2;  }    return fibonacci(n-1, ac2, ac1 + ac2); }
问问为啥这种方法通过不了,难道不支持es6?


发表于 2018-06-22 23:58:13 回复(2)
斐波那契公式:F(1) = 1; F(2) = 1, F(n) = F( n - 1) + F( n - 2 ) ( n > 2)
function fibonacci(n) {
   returnn >= 2 ? fibonacci(n - 1) + fibonacci(n - 2) : n;
}
发表于 2018-06-13 10:06:33 回复(0)
首先对特殊情况进行判断,然后避免使用递归。
function fibonacci(n) {
    if( n < 0 ){
        return 0;
    }
    if( n < 3){
        return 1;
    }
    var start_a = 1, start_b = 1;
    var total = 0;
    for(var i = 2; i < n; i++){
        total = start_a + start_b;
        start_a = start_b;
        start_b = total;
    }
    return start_b;
}
发表于 2017-08-22 14:09:03 回复(0)
function fibonacci(n) {
    dp = [0,1,1];
    return (function f(n){
        if(dp[n]) return dp[n];
        dp[n] = f(n-2) + f(n-1);
        return dp[n];
    })(n);
}

发表于 2017-08-18 15:53:56 回复(0)
functionfibonacci(n){
    if(n==1||n==2)
        return1;
    returnfibonacci(n-1)+fibonacci(n-2);
}
//考察递归
发表于 2017-08-16 19:53:20 回复(0)
function fibonacci(n) {
    return n > 1 ? fibonacci(n-1) + fibonacci(n-2) : n
}
发表于 2017-03-08 12:55:20 回复(0)
function fibonacci(n) {
        if (n == 1 || n == 2) {
            return 1;
        }
        return fibonacci(n - 2) + fibonacci(n - 1);
    }
发表于 2017-02-03 23:59:57 回复(0)
function fibonacci(n) {
    // 1,1,2,3,5,8
    var arr=[0,1];
    var len=arr.length;
    for (var i=0;i<n-1;i++) {
        arr.push(arr[len-1]+arr[len-2]);
        len=arr.length;
        console.log(arr);
    }
    return arr[len-1];
}

编辑于 2016-07-21 21:24:07 回复(0)
function fibonacci (n){
  var arr = [1,1];
  if(n===1 || n===2){
    return arr.slice(0,n);
  }else{
    for(var i=0; i<n-2; i++){
    arr.push(arr[i] + arr[i+1]);
  }
  return arr;
}

编辑于 2015-06-08 09:50:15 回复(0)
function getFibonacciSequence(num){
    var nums=[];
    for(var i=0;i<num;i++){
        if(i==0){
            nums[i]=0;
        }else if(i==1){
            nums[i]=1;
        }else{
            nums[i]=nums[i-1]+nums[i-2];
        }
    }
    return nums;
}
发表于 2015-06-07 10:46:06 回复(0)
function fibonacci(n) {
    var one=1;
    var two=1;
    for(var i=3;i<=n;i++){
      var three=one+two; 
        one=two;
        two=three;
        
    }
    return three;
    
}

发表于 2016-01-20 21:04:28 回复(0)
function fibonacci(n) {
    if(n===1 || n ===2) return 1;
    else return arguments.callee(n - 1) + arguments.callee(n - 2);
}

发表于 2015-09-29 21:09:52 回复(0)

问题信息

难度:
174条回答 27268浏览

热门推荐

通过挑战的用户

查看代码