正如标题所说,我正在尝试构建一个函数,让用户输入一个整数,如果它是斐波那契数或不是斐波那契数,我会在没有硬编码的情况下得到一个 JavaScript 警报,到目前为止我已经尝试过了并且它有效,但是难道没有一种算法可以生成所有斐波那契数列而不是这些选定的数列吗?
代码:
Controller :
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;
}
}
最佳答案
可以通过检查 (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;
}
注意:虽然有一些方法可以通过执行递归函数或创建循环来实现,但这些方法对于大数来说效率低下。
关于javascript - 使用 ASP.NET MVC JavaScript 的斐波那契算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36091084/