ALG9

ALG9



2.5. Pułapek ciąg dalszy 39

nie będzie mógł sprawdzić: jak rzeczywisty kompilator wykona tę funkcję! Mimo, że większość kompilatorów działa podobnie, to zdarzają się pomiędzy nimi drobne różnice, które powodują, że identyczne programy będą dawać różne wyniki Nasz kolejny przykład będzie dotyczył właśnie takiego przypadku.

Proszę spojrzeć na następującą funkcję:

int N(int n,int p)

{

if (n==0) return 1; else

return N (n-1, N (n-p, p) )

ł

Można przeprowadzić dowód matematyczny!, że powyższa definicja jest poprawna w tym sensie, iż dla dowolnych wartości n>0 i p>0 jej wynik jest określony i wynosi 1. Dowód ten opiera się na założeniu, że wartość argumentu wywołania funkcji jest obliczana tylko wtedy, gdy jest naprawdę niezbędna (co wydaje się dość logiczne). Jak się to zaś ma do typowego kompilatora C++?

Otóż regułą w jego przypadku jest to, iż wszystkie parametry funkcji rckuren-cyjnej są ewaluowane jako pierwsze, a następnie dokonywane jest wywołanie samej funkcji. (Taki sposób pracy jest zwany wywołaniem przez wartość.

Problem może zaistnieć wówczas, gdy w wywołaniu funkcji spróbujemy umieścić ją samą; zobaczmy, jak to się odbędzie w przypadku naszej funkcji, np. dla N(l.O) (patrz rysunek 2 - 5).

Rys. 2-5.

^ W‘»(70


i


Nieskończony ciąg Wywołań rekuren-cyjnych.

r, \

■O.

Z

*

1 Patrz [Kro89j.

«0‘^


Wyszukiwarka

Podobne podstrony:
VI. 14. ZIEMOWIT I (ż. PERE JASŁA WA). 315 Dlatego Leż w dalszych dochodzeniach nie będziemy się już
VI. 14. ZIEMOWIT I (ż. PERE JASŁA WA). 315 Dlatego Leż w dalszych dochodzeniach nie będziemy się już
Co pominięto w przykładzie Ad 1. Nie uwzględniono czasu przeszłego. W dalszych rozważaniach nie będz
55702sbf40b371f1dc700a342c01abffd361 Niesamowite fakty ciąg dalszy.1.    Człowiek nie
mowisz masz (88) 92 MÓWISZ, MASZ bliczności, że Stew wysiadł z samolotu o jedno lądowanie za wcześni
Poznaj C++ w$ godziny0184 Zaawansowane referencje i wskaźniki 173 Ponieważ wiemy, że obiekt nie będz
135Gość Konspektu Ciąg dalszy ze strony 12 mógł on być całkiem sformalizowany ze względu na brak sys
Demotywatory  (43) Barbie Kto powiedział że nigdy nie będziesz mieć figury jak ona? www.demotywator
26 Gdzie Są Umarli? bro wolnie zrzekną się ziemskich rzeczy; i że nikt nie będzie mógł wejść do tego
3 09 KLIMATYZACJA (ciąg dalszy) Brak nawiewu chłodnego powietrza Sprawdzić odpowiednie ustawienie el
3 33 (3) SCHOWKI (ciąg dalszy) Przed uruchomieniem pojazdu należy sprawdzić, czy pokrywa schowka na
451P0 Barbie Kto powiedział, że nigdy nie będziesz mieć figury jak ona? www.demotywatory.pl

więcej podobnych podstron