Treści usunięte z lekcji zgodnie z podstawą programową
z 2024 r. sprawdź w e-booku podręcznika na eduranga.pl.

Ćwiczenie 0

Przeanalizuj tabelę oraz kod, a następnie uzupełnij funkcję bank(kwota) pozwalającą obliczyć procent składany, w którym odsetki doliczane są do kwoty lokaty.

def bank(kwota): procent = 0.1 #po pierwszym roku oszczędzania kwota += kwota * procent #po drugim roku oszczędzania pass #po trzecim roku oszczędzania pass return kwota print(bank(1000))
Wynikiem funkcji bank(1000) jest 1331.0.
testResult = bank(1000)==1331.0
1331.0
bank(1000)
Rozwiąż ćwiczenie

Ćwiczenie 1Silnia rekurencyjnie

Zdefiniuj funkcję rekurencyjną silnia(n), której argumentem jest liczba nieujemna n, a wynikiem – obliczona silnia podanej liczby n. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji silnia(3) jest 6.
  • Wynikiem funkcji silnia(9) jest 362880.
# zdefiniuj funkcję def silnia(n): pass # testy print(silnia(3)) print(silnia(9))
Wynikiem funkcji silnia(1) jest 1.
testResult = silnia(1)==1
1
silnia(1)
Wynikiem funkcji silnia(7) jest 5040.
testResult = silnia(7)==5040
5040
silnia(7)
Wynikiem funkcji silnia(20) jest 2432902008176640000.
testResult = silnia(20)==2432902008176640000
2432902008176640000
silnia(20)
Rozwiąż ćwiczenie

Ćwiczenie 2Silnia iteracyjnie

Zdefiniuj funkcję iteracyjną silnia2(n), której argumentem jest liczba nieujemna n, a wynikiem – obliczona silnia podanej liczby n. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji silnia2(3) jest 6.
  • Wynikiem funkcji silnia2(9) jest 362880.
# zdefiniuj funkcję def silnia2(n): pass # testy print(silnia2(3)) print(silnia2(9))
Wynikiem funkcji silnia2(1) jest 1.
testResult = silnia2(1)==1
1
silnia2(1)
Wynikiem funkcji silnia2(7) jest 5040.
testResult = silnia2(7)==5040
5040
silnia2(7)
Wynikiem funkcji silnia(20) jest 2432902008176640000.
testResult = silnia2(20)==2432902008176640000
2432902008176640000
silnia2(20)
Rozwiąż ćwiczenie

Ćwiczenie 3Potęga rekurencyjnie

Zdefiniuj funkcję rekurencyjną potega(a, n), której parametrami są liczba a oraz liczba n, a wynikiem jest obliczona n-ta potęga podanej liczby a. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji potega(2, 3) jest 8.
  • Wynikiem funkcji potega(9, 5) jest 59049.
# zdefiniuj funkcję def potega(a, n): pass # testy print(potega(2, 3)) print(potega(9, 5))
Wynikiem funkcji potega(1, 100) jest 1.
testResult = potega(1, 100)==1
1
potega(1, 100)
Wynikiem funkcji potega(10, 7) jest 10000000.
testResult = potega(10, 7)==10000000
10000000
potega(10, 7)
Wynikiem funkcji potega(12, 3) jest 1728.
testResult = potega(12, 3)==1728
1728
potega(12, 3)
Rozwiąż ćwiczenie

Ćwiczenie 4Rekurencyjny ciąg liczbowy

Pewien ciąg liczb został zdefiniowany rekurencyjnie, tak jak poniżej:

Zdefiniuj funkcję rekurencyjną ciag(n) obliczania n-tego wyrazu tego ciągu. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji ciag(5) jest -56.
  • Wynikiem funkcji ciag(8) jest 19012.
# zdefiniuj funkcję def ciag(n): pass # testy print(ciag(5)) print(ciag(8))
Wynikiem funkcji ciag(1) jest 1.
testResult = ciag(1)==1
1
ciag(1)
Wynikiem funkcji ciag(7) jest -2376.
testResult = ciag(7)==-2376
-2376
ciag(7)
Wynikiem funkcji ciag(10) jest 1711044.
testResult = ciag(10)==1711044
1711044
ciag(10)
Rozwiąż ćwiczenie

Ćwiczenie 5Suma cyfr

Zdefiniuj funkcję rekurencyjną suma_cyfr(n), która wyznaczy sumę cyfr liczby podanej jako parametr. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji suma_cyfr(136) jest 10.
  • Wynikiem funkcji suma_cyfr(19918) jest 28.
# zdefiniuj funkcję def suma_cyfr(n): pass # testy print(suma_cyfr(136)) print(suma_cyfr(19918))
Wynikiem funkcji suma_cyfr(2) jest 2.
testResult = suma_cyfr(2)==2
2
suma_cyfr(2)
Wynikiem funkcji suma_cyfr(22) jest 4.
testResult = suma_cyfr(22)==4
4
suma_cyfr(22)
Wynikiem funkcji suma_cyfr(222222) jest 12.
testResult = suma_cyfr(222222)==12
12
suma_cyfr(222222)
Rozwiąż ćwiczenie

Ćwiczenie 7Ciąg Fibonacciego rekurencyjnie

Zdefiniuj funkcję rekurencyjną fib(n), której parametrem jest liczba n, a wynikiem – n-ta liczba ciągu Fibonacciego. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji fib(4) jest 3.
  • Wynikiem funkcji fib(11) jest 89.
# zdefiniuj funkcję def fib(n): pass # testy print(fib(4)) print(fib(11))
Wynikiem funkcji fib(2) jest 1
testResult = fib(2)==1
1
fib(2)
Wynikiem funkcji fib(12) jest 144
testResult = fib(12)==144
144
fib(12)
Wynikiem funkcji fib(25) jest 75025
testResult = fib(25)==75025
75025
fib(25)
Rozwiąż ćwiczenie

Ćwiczenie 8Ciąg Fibonacciego iteracyjnie

Zdefiniuj funkcję iteracyjną fib2(n), której parametrem jest liczba n, a wynikiem – n-ta liczba ciągu Fibonacciego. Sprawdź działanie funkcji dla podanych poniżej parametrów.

  • Wynikiem funkcji fib2(4) jest 3.
  • Wynikiem funkcji fib2(11) jest 89.
# zdefiniuj funkcję def fib2(n): pass # testy print(fib2(4)) print(fib2(11))
Wynikiem funkcji fib2(32) jest 2178309.
testResult = fib2(32)==2178309
2178309
fib2(32)
Wynikiem funkcji fib2(37) jest 24157817.
testResult = fib2(37)==24157817
24157817
fib2(37)
Wynikiem funkcji fib2(40) jest 102334155.
testResult = fib2(40)==102334155
102334155
fib2(40)
Rozwiąż ćwiczenie

Ćwiczenie dodatkowe 1

Kolejne liczby ciągu Lucasa oblicza się w taki sam sposób jak liczby Fibonacciego, z tym że początkowe liczby są równe 2 i 1. Każda kolejna liczba Lucasa jest sumą dwóch poprzednich, a zatem początkowe wartości ciągu Lucasa to: 2, 1, 3, 4, 7, 11, 18, 29, 47, 76, 123, 199, 322, 521, 843, 1364, …

Zdefiniuj rekurencyjną funkcję lucas(n), której wynikiem będzie n-ta liczba Lucasa i przetestuj dla wartości trzeciej i jedenastej z kolei.

# zdefiniuj funkcję def lucas(n): pass # testy
Wynikiem funkcji lucas(1) jest 2.
testResult = lucas(1)==2
2
lucas(1)
Wynikiem funkcji lucas(10) jest 76.
testResult = lucas(10)==76
76
lucas(10)
Wynikiem funkcji lucas(16) jest 1364.
testResult = lucas(16)==1364
1364
lucas(16)
Rozwiąż ćwiczenie

Zadanie 2Złota proporcja

Wypisz kolejne ilorazy wartości F(n) i F(n – 1) ciągu Fibonacciego dla przedziału od 2 do 20. Jaką widać prawidłowość?

Wskazówka: pierwsze cztery ilorazy to: 1.0, 2.0, 1.5, 1.6666666666666667.

# zdefiniuj funkcję def fib(n): pass # testy
Rozwiąż ćwiczenie

Zadanie 3Fibonacci i króliki

Fibonacci przedstawił zależność znaną obecnie jako ciąg Fibonacciego na przykładzie analizy liczby par królików w stadzie, w którym każda dojrzała para co miesiąc wydaje na świat parę młodych. Króliki osiągają dojrzałość dopiero po miesiącu. Na początku w stadzie żyje jedna para królików. Na koniec każdego miesiąca w stadzie żyje więc tyle par królików, ile w sumie żyło pod koniec dwóch poprzednich miesięcy, np. w miesiącu trzecim liczba par królików wynosi 2, czwartym – 3, w piątym – 5 itd.

Ponieważ króliki umierają, w każdym miesiącu, którego numer jest podzielny przez 7, liczba par królików zmniejsza się o wartość tego numeru. Przyjmij, że umierają króliki najstarsze.

Poniższa tabela przedstawia liczbę par królików w kolejnych miesiącach.

Zdefiniuj funkcję stado(n) obliczania liczby par królików w poszczególnych miesiącach i przetestuj działanie tej funkcji dla trzeciego, siódmego i czternastego miesiąca.

# zdefiniuj funkcję def stado(n): pass # testy
Wynikiem funkcji stado(1) jest 1.
testResult = stado(1)==1
1
stado(1)
Wynikiem funkcji stado(2) jest 1.
testResult = stado(2)==1
1
stado(2)
Wynikiem funkcji stado(12) jest 88.
testResult = stado(12)==88
88
stado(12)
Rozwiąż ćwiczenie

Pytania quizoweRekurencja i ciąg Fibonacciego

Twój wynik to: /3
  • Jak oblicza się kolejne liczby w ciągu Fibonacciego?
  • Czym charakteryzuje się rekurencja?
  • Która z metod obliczania kolejnych elementów ciągu Fibonacciego jest bardziej efektywna: iteracyjna czy rekurencyjna?