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

Tworzenie tablicy typu większego niż long

Cloud VPS
0 głosów
229 wizyt
pytanie zadane 29 grudnia 2017 w Java przez Kabuuz Bywalec (2,820 p.)

Cześć. Próbuje zrobić zadanie z ciągiem Fibonacciego. Musze wyznaczyć 100 pierwszych wyrazów ciągu i mam z tym pewien problem- wyrazy wykraczają poza zakres typu long. Szukałem i znalazłem że jest coś takiego jak "long maxLong" ale przy deklaracji tablicy z takim cudem czymś wyskakuje wielki błąd.

A tak przy okazji:

int[] tab = new int[ile];

int[ile] tab; // ={el1, el2,...}

Czym różnią się te dwie deklaracje tablic? Bo we wszystkich kursach na jakie napotkałem był używany pierwszy sposób ale gdzieś zabłądziłem i natknąłem się na ten drugi. Z C++ kojarzę coś że drugi to dynamiczne alokowanie pamięci i chyba można ją zwolnić potem. I czy da się przypisać jakoś wartości tak jak po komentarzu dla tej pierwszej tablicy?

 

1 odpowiedź

+1 głos
odpowiedź 29 grudnia 2017 przez Tomasz90 Nałogowiec (25,140 p.)
edycja 29 grudnia 2017 przez Tomasz90
Tym się różnią, że pierwszy tworzy dynamiczna a drugi statyczną tablicę. W javie działa tylko ten sposób z dynamiczną ewentualnie jak usuniesz rozmiar tablicy z drugiego sposobu i wypiszesz elementy w nawiasach to też zadziała.

Co do tego zwalniania pamięci to w Javie nie masz nad tym takiej kontroli jak w c++. Dlatego powinieneś starać się deklarować zmienne lokalne dopiero jak ich potrzebujesz.

Wyrazy w tym zadaniu nie mogą przekraczać zakresu long. Przecież każdy następny wyraz jest sumą poprzednich a Ty masz znaleźć tylko 100. Musiałeś zrobić jakiś błąd w algorytmie
komentarz 29 grudnia 2017 przez Kabuuz Bywalec (2,820 p.)
long[] fib = new long[100];
		fib[0] = 1;
		fib[1] = 1;
		
		for(int i=2; i<100; i++){
			fib[i] = fib[i-1] + fib[i-2];
			System.out.println(fib[i]);
		}

Jakoś nie mogę tu znaleźć błędu. Możesz rzucić na to okiem?

komentarz 29 grudnia 2017 przez Tomasz90 Nałogowiec (25,140 p.)
Sorry źle Ci napisałem, rzeczywiście przekroczy zakres. Musisz liczyć na typie BigInteger. Algorytm ok

Podobne pytania

0 głosów
5 odpowiedzi 677 wizyt
pytanie zadane 4 października 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)
0 głosów
0 odpowiedzi 360 wizyt
pytanie zadane 31 października 2018 w SQL, bazy danych przez Grzegorz Mikina Dyskutant (8,060 p.)
0 głosów
1 odpowiedź 1,315 wizyt

93,487 zapytań

142,423 odpowiedzi

322,773 komentarzy

62,908 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

Kursy INF.02 i INF.03
...