• 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

VPS Starter Arubacloud
0 głosów
174 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 364 wizyt
pytanie zadane 4 października 2015 w C i C++ przez 0xf Dyskutant (8,180 p.)
0 głosów
0 odpowiedzi 234 wizyt
pytanie zadane 31 października 2018 w SQL, bazy danych przez Grzegorz Mikina Dyskutant (8,060 p.)
0 głosów
1 odpowiedź 826 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...