使用立即调用的函数表达式(IIFE)编写代码以创建斐波那契函数的代码

问题描述 投票:0回答:1

[目前,我正在尝试编写JavaScript来进行斐波那契序列。我有数学部分,但是我们必须有一个名为fibonacciResults的数组,我不确定如何使用名为fibonacciResults的数组并对其进行初始化,这样fibonacci(0)将为0,fibonacci(1)将为1。此外,如果结果(fibonacci(n))之前从未计算过,请递归计算新结果并将其保存在fibonacciResults数组中。

document.querySelector('#calculate-fibonacci').addEventListener('click', function () {
  var fibonacci; // Do not declare more variables here.

  // WRITE YOUR fibonacci FUNCTION HERE
  fibonacci = function fibonacci(n) {
     fibonacciResults = [];
     n = Math.round(n);
     if (Number.isFinite(n) && n >= 0) {
        if (n < 2) {
           return n;
        }
        return fibonacci(n - 2) + fibonacci(n - 1);
     }
     return 0;
  };

  (function () {
     var whichFibonacciNumber;
     // Get the user's number.
     whichFibonacciNumber = parseInt(document.querySelector('#fibonacci-input').value, 10);
     // Use the fibonacci function to calculate the output.
     document.querySelector('#which-fibonacci-number').textContent = whichFibonacciNumber;
     document.querySelector('#fibonacci-number').textContent = fibonacci(whichFibonacciNumber);
  }());

},否);

javascript
1个回答
0
投票
fibonacci = (function () {
    var cache = {};
    return function (n) {

        var cached = cache[n];
        if (cached) return cached;

        if (n <= 1) return n;
        console.log(n);

        return (cache[n] = fibonacci(n - 2) + fibonacci(n - 1));
    };
}());
© www.soinside.com 2019 - 2024. All rights reserved.