2016-03-18 4 views
2

Wie der Titel schon sagt, Ich versuche, eine Funktion zu bauen, wo der Benutzer in einer ganzen Zahl setzt und erhält einen JavaScript-Alarm, wenn es eine Fibonacci-Zahl oder nicht, ohne hart Codeing ist, habe ich versucht, das ist so weit und es funktioniert, aber gibt es nicht einen Algorithmus, der alle Fibonacci-Zahlen anstelle dieser ausgewählten machen kann?Fibonacci-Algorithmus mit ASP.NET MVC JavaScript

Code:

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(); 
     } 
    } 
} 

Ausblick:

@{ 
    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; 
    } 
} 
+3

Sie die beiden vorherigen Zahlen der Fibonacci-Sequenz nur durch Summe finden. 0, 1, * 1 *, 2 *, 3 *, * 5 *, 8 * * * * 13, * 21 *, 34 * *, ... – JCM

+1

Sie können eine Funktion erstellen, die rekursiv sich selbst aufruft. –

+0

Ich habe den Code bearbeitet, aber es funktioniert immer noch nicht, was habe ich falsch gemacht? –

Antwort

2

Eine Fibonacci-Sequenz ist die Kombination der beiden vorhergehenden Zahlen. Sie können es auf Ihre Zahl berechnen und wenn es ein Teil dieser Sequenz ist dann ist es:

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/

+0

Also habe ich das gemacht und es hat nicht funktioniert, ich habe meinen JavaScript-Code bearbeitet, schaue bitte unten, was habe ich falsch gemacht? –

+0

ok 1 Sekunde und ich werde einen Blick – kemiller2002

+0

@AndreKoroshKordasti nehmen. .. Ändern Sie 'var num = document.getElementById ('fibonacciTextbox') value' auf' var num = + document.getElementById ('fibonacciTextbox') Wert; 'und rufen Sie die Funktion ausgeführt werden:' isFibonacci (num); 'an das Ende –

4

Eine Fibonacci-Nummer kann durch Prüfen, ob das Ergebnis (5 * n bestimmt werden * n + 4) oder (5 * n * n - 4) oder beide sind ein perfektes Quadrat.

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

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

Hinweis: Obwohl es Möglichkeiten gibt, dies zu tun, indem sie entweder eine rekursive Funktion oder die Schaffung einer Schleife zu tun, würden diese Methoden für eine große Anzahl ineffizient erweisen.

+0

Ein wirklich netter! – JCM

0

Recursively Fibonacci Serie-

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