使用 ASP.NET MVC JavaScript 的斐波那契算法

Fibonacci Algorithm with ASP.NET MVC JavaScript

正如标题所说,我正在尝试构建一个函数,用户输入一个整数并在没有 hard-codeing 的情况下获得 JavaScript 警报,如果它是斐波那契数,我已经尝试过到目前为止这是有效的,但是没有一个算法可以生成所有斐波那契数而不是这些选定的数吗?

代码:

控制器:

using System;
using System.Linq;
using System.Web.Mvc;
using System.Xml.Linq;
using Andre_Kordasti___Programmeringsuppgift.Models;

namespace Andre_Kordasti___Programmeringsuppgift.Controllers
{
    public class HomeController : Controller
    {

     public ActionResult Fibonacci()
        {
            return View();
        }
    }
}

查看:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Fibonacci</h2>

<input class="form-control" type="text" name="fibonacciTextbox" id="fibonacciTextbox" />
<br />
<button class="btn btn-primary" onclick="fibonacciFunction()">Sök</button>

JavaScript:

  function fibonacciFunction()
{
    var num = document.getElementById('fibonacciTextbox').value

    function isFibonacci(num)
    {
        var first = 0;
        var second = 1;
        var third = first + second;

        if (num === first)
        {
            return true;
            alert('Fibonacci Number!')
        }

        while (third <= num)
        {
            if (third === num)
            {
                alert('Fibonacci Number!')
                return true;
            }

            first = second;
            second = third;
            third = first + second;
        }

        alert('Not Fibonacci Number!')

        return false;
    }
}

斐波那契数列是前两个数字的组合。您可以根据您的数字计算它,如果它是该序列的一部分,那么它是:

function isFibonacci (num){
  var first = 0;
  var second = 1; 
  var third = first + second;

  if(num === first){return true;}    

  while(third <= num)
  {
    if(third === num )
    {
       return true;
    }

    first = second;
    second = third; 
    third = first + second;
  }

   return false;

}

https://jsfiddle.net/04m4t9av/1/

斐波那契数可以通过检查 (5*n*n + 4) 或 (5*n*n - 4) 或两者的结果是否为完美平方来确定。

function isFibonacci(num) {
    return isPerfectSquare(5*num*num + 4) || isPerfectSquare(5*num*num - 4);
}

function isPerfectSquare(n) {
    return Math.sqrt(n) % 1 === 0;
}

注意:尽管可以通过执行递归函数或创建循环来实现此目的,但这些方法对于大数来说效率低下。

递归求斐波那契数列-

var recursive = function(n) {
if(n <= 2) {
    return 1;
} else {
    return this.recursive(n - 1) + this.recursive(n - 2);
}
};