Napisz program, który wypisze wszystkie wyrazy ciągu Fibonacciego mniejsze od liczby n w kolejności niemalejącej. Dla dwóch pierwszych wyrazów należy przyjąć, że są równe odpowiednio 0 i 1. Swój program przetestuj dla n = 100.
Specyfikacja:
Dane:
n – liczba naturalna, od której wypisane wyrazy mają być mniejsze
Wynik:
Program wypisuje wszystkie wyrazy ciągu Fibonacciego mniejsze od n, w kolejności niemalejącej, każdy wyraz w nowej linii.
R1012tKEUSJrw
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Przykładowe rozwiązanie zadania:
Linia 1. public class Main otwórz nawias klamrowy.
Linia 2. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 3. int n znak równości 100 średnik.
Linia 5. long a znak równości 0 średnik.
Linia 6. long b znak równości 1 średnik.
Linia 7. while otwórz nawias okrągły a otwórz nawias ostrokątny n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 8. System kropka out kropka println otwórz nawias okrągły a zamknij nawias okrągły średnik.
Linia 9. long suma znak równości a plus b średnik.
Linia 10. a znak równości b średnik.
Linia 11. b znak równości suma średnik.
Linia 12. zamknij nawias klamrowy.
Linia 13. zamknij nawias klamrowy.
Linia 14. zamknij nawias klamrowy.
public class Main {
public static void main(String[] args) {
int n = 100;
long a = 0;
long b = 1;
while (a < n) {
System.out.println(a);
long suma = a + b;
a = b;
b = suma;
}
}
}
21
Ćwiczenie 2
Napisz program, który przedstawi liczbę n jako sumę dwóch wyrazów ciągu Fibonacciego lub wypisze komunikat BRAK w przypadku braku rozwiązania. Rozwiązanie, jeśli istnieje, należy wypisać w postaci dwóch liczb oddzielonych spacją, podanych w kolejności niemalejącej. Dla dwóch pierwszych wyrazów należy przyjąć, że są równe odpowiednio 0 i 1. Przetestuj swój program dla n = 42.
Specyfikacja:
Dane:
n – liczba naturalna, której rozkład należy obliczyć;
Wynik:
Program wyświetla dwa elementy ciągu Fibonacciego, oddzielone spacją w kolejności niemalejącej, które sumują się do n lub komunikat BRAK w przypadku braku rozwiązania.
Ra6kUyLway9F6
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Przykładowe rozwiązanie zadania:
Linia 1. import java kropka util kropka List średnik.
Linia 2. import java kropka util kropka ArrayList średnik.
Linia 4. public class Main otwórz nawias klamrowy.
Linia 5. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 6. int n znak równości 42 średnik.
Linia 7. rozklad otwórz nawias okrągły n zamknij nawias okrągły średnik.
Linia 8. zamknij nawias klamrowy.
Linia 10. static List otwórz nawias ostrokątny Long zamknij nawias ostrokątny fibo znak równości new ArrayList otwórz nawias ostrokątny zamknij nawias ostrokątny otwórz nawias okrągły zamknij nawias okrągły średnik.
Linia 12. public static void rozklad otwórz nawias okrągły int n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 13. long a znak równości 0 średnik.
Linia 14. long b znak równości 1 średnik.
Linia 16. while otwórz nawias okrągły b otwórz nawias ostrokątny n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 17. fibo kropka add otwórz nawias okrągły a zamknij nawias okrągły średnik.
Linia 19. long suma znak równości a plus b średnik.
Linia 20. a znak równości b średnik.
Linia 21. b znak równości suma średnik.
Linia 22. zamknij nawias klamrowy.
Linia 24. int i znak równości 0 średnik.
Linia 25. while otwórz nawias okrągły otwórz nawias okrągły a plus fibo kropka get otwórz nawias okrągły i zamknij nawias okrągły zamknij nawias okrągły otwórz nawias ostrokątny n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 26. i plus plus średnik.
Linia 27. zamknij nawias klamrowy.
Linia 29. if otwórz nawias okrągły otwórz nawias okrągły a plus fibo kropka get otwórz nawias okrągły i zamknij nawias okrągły zamknij nawias okrągły znak równości znak równości n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 30. System kropka out kropka println otwórz nawias okrągły fibo kropka get otwórz nawias okrągły i zamknij nawias okrągły plus cudzysłów cudzysłów plus a zamknij nawias okrągły średnik.
Linia 31. zamknij nawias klamrowy else otwórz nawias klamrowy.
Linia 32. System kropka out kropka println otwórz nawias okrągły cudzysłów BRAK cudzysłów zamknij nawias okrągły średnik.
Linia 33. zamknij nawias klamrowy.
Linia 34. zamknij nawias klamrowy.
Linia 35. zamknij nawias klamrowy.
import java.util.List;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
int n = 42;
rozklad(n);
}
static List<Long> fibo = new ArrayList<>();
public static void rozklad(int n) {
long a = 0;
long b = 1;
while (b < n) {
fibo.add(a);
long suma = a + b;
a = b;
b = suma;
}
int i = 0;
while ((a + fibo.get(i)) < n) {
i++;
}
if ((a + fibo.get(i)) == n) {
System.out.println(fibo.get(i) + " " + a);
} else {
System.out.println("BRAK");
}
}
}
31
Ćwiczenie 3
Napisz program, który obliczy liczbę wywołań rekurencyjnych funkcji fibonacci() dla obliczenia elementu ciągu Fibonacciego o indeksie n. Uwzględniamy wszystkie wywołania. Przetestuj działanie programu dla elementu ciągu o indeksie 11.
Specyfikacja:
Dane:
n – indeks elementu ciągu Fibonacciego (indeksy liczone od 0); liczba naturalna
Wynik:
Program wyświetla liczbę wywołań rekurencyjnych danej funkcji dla obliczenia elementu ciągu Fibonacciego o indeksie n.
RnUrf89JcSinl
Wymyśl pytanie na kartkówkę związane z tematem abstraktu.
Wymyśl pytanie na kartkówkę związane z tematem abstraktu.
Przykładowe rozwiązanie zadania:
Linia 1. public class Main otwórz nawias klamrowy.
Linia 2. static int licznik średnik.
Linia 4. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy.
Linia 5. int n znak równości 11 średnik.
Linia 6. System kropka out kropka println otwórz nawias okrągły ileWywolan otwórz nawias okrągły n zamknij nawias okrągły zamknij nawias okrągły średnik.
Linia 7. zamknij nawias klamrowy.
Linia 9. public static int ileWywolan otwórz nawias okrągły int n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 10. licznik znak równości 0 średnik.
Linia 11. fibonacci otwórz nawias okrągły n zamknij nawias okrągły średnik.
Linia 12. return licznik średnik.
Linia 13. zamknij nawias klamrowy.
Linia 15. public static long fibonacci otwórz nawias okrągły int n zamknij nawias okrągły otwórz nawias klamrowy.
Linia 16. licznik plus plus średnik.
Linia 17. if otwórz nawias okrągły n znak równości znak równości 0 kreska pionowa kreska pionowa n znak równości znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy.
Linia 18. return n średnik.
Linia 19. zamknij nawias klamrowy.
Linia 21. return fibonacci otwórz nawias okrągły n minus 1 zamknij nawias okrągły plus fibonacci otwórz nawias okrągły n minus 2 zamknij nawias okrągły średnik.
Linia 22. zamknij nawias klamrowy.
Linia 23. zamknij nawias klamrowy.
public class Main {
static int licznik;
public static void main(String[] args) {
int n = 11;
System.out.println(ileWywolan(n));
}
public static int ileWywolan(int n) {
licznik = 0;
fibonacci(n);
return licznik;
}
public static long fibonacci(int n) {
licznik++;
if (n == 0 || n == 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
}