inf2025Mz1/z1.txt

41 lines
1.6 KiB
Plaintext
Raw Permalink Normal View History

2025-09-08 06:32:28 +00:00
**Zadanie 1. Funkcja rekurencyjna**
Dana jest rekurencyjna funkcja `przestaw`, której parametrem jest nieujemna liczba całkowita:
```
przestaw(n):
r ← n mod 100
a ← r div 10
b ← r mod 10
n ← n div 100
jeżeli n > 0
w ← a + 10 * b + 100 * przestaw(n)
w przeciwnym razie
jeżeli a > 0
w ← a + 10 * b
w przeciwnym razie
w ← b
wynikiem jest w
```
**Uwaga:**
Operator `mod` oznacza resztę z dzielenia, natomiast `div` część całkowitą z dzielenia.
---
**Zadanie 1.1. (03)**
Uzupełnij tabelę wpisz w drugiej kolumnie wynik funkcji `przestaw(n)` dla podanych wartości argumentu $ n $ oraz wpisz w trzeciej kolumnie liczbę wywołań funkcji `przestaw` łącznie z pierwszym wywołaniem z parametrem $ n $.
| $ n $ | Wykonanie funkcji `przestaw` | Liczba wywołań funkcji `przestaw` |
|------------------|-------------------------------|------------------------------------|
| 316498 | 134689 | 3 |
| 43657688 | | |
| 154005710 | | |
| 998877665544321 | | |
---
**Wskazówka:**
Funkcja `przestaw` działa poprzez rozkładanie liczby na pary cyfr od końca i ich przestawianie w określony sposób. Każde rekurencyjne wywołanie redukuje liczbę o dwa ostatnie cyfry (dzielenie przez 100). Liczba wywołań zależy od liczby par cyfr w liczbie.