Kiedyś jak byłem w Irlandii zadalem na forum mycork taka zagadke - oczywiście znalezioną w sieci...
Na forum możecie przeczytać całą dyskusje - ciekawa polecam.
Na samym końcu jest mail do mnie od IZY którą pozdrawiam.I przy okazji przesyłam pozytywną energię Joli z którą dyskutowałem :)
Zadanie:
Matka jest o 21 lat starsza od swojego dziecka. Za 6 lat Dziecko będzie 5 razy młodsze od matki
Pytanie:
Gdzie jest ojciec? To zadanie jest do rozwiązania i nie jest tak trudne, na jakie wygląda. Nie patrz na rozwiązanie, można je rozwiązać matematycznie.
Uwaga:
Pytanie "Gdzie jest ojciec" musisz dokładnie przeanalizować.
Rozwiązania szukaj niżej...
Jeszcze niżej...
Rozwiązanie:
Dziecko ma dzisiaj X lat, a jego matka Y lat.
Wiemy, że matka jest 21 lat starsza od dziecka.
W następstwie:
X + 21 = Y
Wiemy również, że za 6 lat dziecko będzie 5 razy młodsze od matki. Możemy zatem napisać następujące równanie:
5 (X + 6) = Y + 6 Zastąpimy Y przez X i rozpoczynamy rozwiązywać:
5 (X + 6) = X + 21 + 6
5X + 30 = X + 27
5X - X = 27 - 30
4X = -3
X = -3/4
Dziecko ma dzisiaj -3/4 roku, co jest równe -9 miesięcy...
Rozumując matematycznie, można przez to dowieźć, że matka jest w tym właśnie momencie BZYKANA!!
Rozwiązanie:
OJCIEC JEST NA MATCE (w matce? Smile
No to ja pojde dalej, i rozpisze matematycznie podany przez Ciebie przyklad.
Na przykładzie zastosowań matematycznych poniższa definicja ciągu Fibonacciego jest rekurencyjna:
fib(0) = 0
fib(1) = 1
fib(n) = fib(n - 1) + fib(n - 2), dla n \ge 2
gdyż definiuje funkcję odwołując się w definicji do niej samej.
Każda definicja rekurencyjna potrzebuje przynajmniej jednego przypadku bazowego (nie rekurencyjnego), w tym przypadku są to wartości dla 0 i 1. W przeciwnym wypadku nigdy się nie zakończy.
Dla przykładu, obliczenie fib(4) wygląda następująco:
fib(4) = fib(3) + fib(2) = (fib(2) + fib(1)) + (fib(1) + fib(0)) = ((fib(1) + fib(0)) + fib(1)) + (fib(1) + fib(0)) = ((1 + 0) + 1) + (1 + 0) = 3
Innym przykładem jest wyliczanie największego wspólnego dzielnika za pomocą algorytmu Euklidesa:
1. gcd(0,n)=n,
2. gcd(k,n)=gcd(n mod k, k) dla k>0 (n mod k oznacza tu resztę z dzielenia n przez k).
lub inaczej:
\mbox{gcd}(k,n)= \begin{cases} n & \mbox{dla }k=0; \\ \mbox{gcd}(n\ \mbox{mod }k, k) & \mbox{dla }k>0. \end{cases}
Rekursja jest podstawową techniką wykorzystywaną w funkcyjnych językach programowania.
Należy jednak zachować ostrożność przy używaniu rekursji w rzeczywistych programach. Jeśli program nie jest w rzeczywistości rekurencyjny, to rekursja może dramatycznie zwiększyć złożoność obliczeniową. Ponadto rekursja prawie zawsze zwiększa pamięciowe zapotrzebowanie programu. Np. W powyższym przykładzie obliczania fib(4) niepotrzebnie jest dwukrotnie obliczana wartość fib(2). Takie problemy nie pojawiają się przy drugim z przykładów. Niezaprzeczalną zaletą rekursji jest prostota programów, które z niej korzystają.
Mimo to, droga Jolu i Adamie - wbrew temu co sugerujecie - ani na krok nie zblizylismy sie do matematycznej definicji "bzykania" - ktora to definicja z cala pewnoscia istnieje..
1 komentarz:
Kochany Adasiu, miłośniku bzykania ;P możemy dowieŚĆ, a nie dowieŹĆ :) Dowieźć to możemy towar na miejsce na przykład (samochodem lub innym środkiem transportu). Pozdrawiam ciepło :-*aidings
Prześlij komentarz