• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ciąg fibonacciego Javascript

Object Storage Arubacloud
0 głosów
2,555 wizyt
pytanie zadane 22 grudnia 2018 w JavaScript przez Weronika Nowicjusz (220 p.)

Cześć Wszystkim! 

Potrzebuję zrobić formularz, w którym będzie można wpisać numer obliczanego wyrazu ciągu Fibonacciego, a po naciśnięciu przycisku, wynik ma się pojawić pod formularzem. Efekt ma wyglądać tak:

Mój kod wygląda tak:

to mam wpisane w sekcji <head>

function fibonacci(n) {
		if (n === 0) return 0;
			else if (n === 1 || n === 2) return 1;
			else if (n > 2) {
				var a = 1;
				var b = 1;
				var c = 0;
        for (var i = 0; i < n - 2; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        return c;
    }
}
			function parseInt(n) {
				var n = parseInt["myForm"].elements["name"].value;
				var oblicz = fibonacci(n);
				var wynik = "Wynik "+oblicz+"";
				document.getElementById("message").innerHTML = tekst;
				}

a to mam w sekcji <body>

<form name="myForm">
			Numer wyrazu ciągu Fibonacciego:
			<input type="text" name="name">
			<input type="button" value="Oblicz" onclick="parseInt(n)">
		</form>
		<p id="message"></p>

 

Efekt mojego kodu jest taki, że po kliknięciu oblicz nie pojawia się nic :-(

Wiem, że to są podstawy, ale dopiero zaczynam, więc proszę o zrozumienie i pomoc :-)

 

komentarz 22 grudnia 2018 przez Tomek Sochacki Ekspert (227,510 p.)
Obliczanie tego to dość wymagająca operacja i czasami robi się też tak, że np. takie znane liczby generuje się wcześniej i np. 100-200 pierwszych liczb zapisuje się np. w tablicy i wtedy te pierwsze liczby odczytasz bez obliczeń... jeśli za chwilę miałbyś robić na tych liczbach jeszcze kolejne obliczenia to takie optymalizacje mają sens.

Można nawet zrobić oddzielny skrypt, który generuje x liczb i zapiąc sobie jakiś event w aplikacji na to jaki liczby apka potrzebuje i w razie potrzeby dogenerować sobie ich nieco więcej lub mniej w zależności od potrzeb.

Nie warto zawsze na siłę robić wszystkiego od nowa, tym bardziej, że te liczby są znane i niezmienne :)

2 odpowiedzi

0 głosów
odpowiedź 22 grudnia 2018 przez Igor Gawrys Stary wyjadacz (12,460 p.)
komentarz 22 grudnia 2018 przez Weronika Nowicjusz (220 p.)
Dzięki za pomoc :-) Tylko mam jeszcze pytanie, czy ten kod działa poprawnie? Bo wpisując numer ciągu 3, liczbą zwracaną jest 2, a powinno być 1, bo trzecim wyrazem ciągu Fibonacciego jest właśnie 1.
komentarz 22 grudnia 2018 przez Igor Gawrys Stary wyjadacz (12,460 p.)

@Weronika jest to już kwestia funkcji więć jęśli funkcja nie zwraca prawidłowej wartości musisz zmienić obliczenia dokonywane po [zdarzeniu=>onclick].

0 głosów
odpowiedź 22 grudnia 2018 przez niezalogowany

1. Nie przekazujesz żadnego parametru do funkcji parseInt

2. Wartość z pola tekstowego pobierz tak:

document.getElementById("name").value;

3. Jeżeli wynik funkcji fibonacci przypisujesz do zmiennej wynik to czemu wyświetlasz zmienną tekst

 

cały kod:

<!DOCTYPE HTML>
<html lang = "pl">
	<head>
		<title>Ciąg fibonacciego</title>
		<meta charset = "utf-8"/>
	</head>
	<body>
        <form name="myForm">
            Numer wyrazu ciągu Fibonacciego:
            <input type="text" id="name">
            <input type="button" value="Oblicz" onclick="parseInt()">
        </form>
        <p id="message"></p>
    </body>
    <script>
    function fibonacci(n) {
        if (n === 0) return 0;
            else if (n === 1 || n === 2) return 1;
            else if (n > 2) {
                var a = 1;
                var b = 1;
                var c = 0;
        for (var i = 0; i < n - 2; i++) {
            c = a + b;
            a = b;
            b = c;
        }
        return c;
    }
}
    function parseInt() {
                var n = document.getElementById("name").value;
                var oblicz = fibonacci(n);
                var wynik = "Wynik "+oblicz+"";
                document.getElementById("message").innerHTML = wynik;
                }
    
    </script>
</html>

 

Podobne pytania

+2 głosów
3 odpowiedzi 4,975 wizyt
pytanie zadane 11 stycznia 2018 w JavaScript przez rayet5 Nowicjusz (200 p.)
0 głosów
1 odpowiedź 164 wizyt
pytanie zadane 20 maja 2023 w C i C++ przez Igaiga Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 453 wizyt
pytanie zadane 3 lutego 2021 w Python przez AgentTecza Obywatel (1,810 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...