Pytanie
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.
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.
Zadanie 1.2.
Oceń prawdziwość podanych zdań. Zaznacz P, jeśli zdanie jest prawdziwe, albo F - jeśli jest fałszywe.
Niech n będzie liczbą k-cyfrową, gdzie k > 0. Liczba wywołań funkcji przestaw w zależności od k jest równa:
Zadanie 1.3.
W postaci pseudokodu lub w wybranym języku programowania napisz nierekurencyjną funkcję przestaw2, która dla danej nieujemnej liczby całkowitej n da taką samą wartość jak przestaw(n).
Uwaga: Twój algorytm może używać wyłącznie zmiennych przechowujących liczby całkowite oraz może operować wyłącznie na liczbach całkowitych. W zapisie możesz wykorzystać tylko operacje arytmetyczne: dodawanie, odejmowanie, mnożenie, dzielenie, dzielenie całkowite, resztę z dzielenia oraz porównywanie liczb, instrukcje sterujące, przypisania do zmiennych lub samodzielnie napisane funkcje, wykorzystujące wyżej wymienione operacje. Zabronione jest używanie funkcji wbudowanych oraz operatorów innych niż wymienione, w tym - funkcji przestaw.
Specyfikacja:
Dane
n – nieujemna liczba całkowita
Wynik
w – nieujemna liczba całkowita, wynik działania taki sam jak po wykonaniu przestaw(n)
Odpowiedź nauczyciela
Zaloguj się, by odkryć odpowiedź!
Aby uzyskać dostęp do treści, musisz być zalogowany.

