43 (392)

43 (392)



program cw3_49;

{ Program oblicza N! za pomocą funkcji Silnia. }

{ Katalog r3_10 : 3_49.pas    }

var

N : Byte;

function Silnia (N : Byte) : Longint;

{ Funkcja oblicza silnie liczby N metoda rekurencyjna. } begin

if N - 0 then

Silnia    1

else

Silnia    N * Silnia (N-l);

end; {-------------------- Silnia -} begin

Write ('Podaj liczbę: '); Readln (N); Writeln (N,    Silnia(N));

Readln; end.

Ależ nam się funkcja uprościła. Pozbyliśmy się dodatkowych zmiennych. Od razu widać, jak działa. Niestety na czasie wykonania nie zyskaliśmy nic (a pewnie mamy trochę strat, biorąc pod uwagę różnice w działaniu pętli for i wielokrotnego wywoływania funkcji).

Przypomnijmy sobie jednak algorytmy, w których rekurencja dawała nam korzyści. Na przykład wyliczanie 2N z ćwiczenia 1.9. A właściwie dlaczego 2? Czy tą metodą nie wyliczymy też szybko i dokładnie potęgi dowolnej liczby całkowitej? Oczywiście, że tak. W rzeczywistości da się tak policzyć nawet potęgę dowolnej liczby, ale ponieważ wejdziemy w obszar obliczeń zmiennopozycyjnych, lepiej skorzystać ze sztuczki z loga-rytmami.

ĆWICZENIE

3.50


Potęga naturalna — rekurencyjnie

Napisz funkcję obliczającą metodą rekurencyjną naturalną potęgę liczby całkowitej i program sprawdzający jej działanie.

Zajrzyjmy do ćwiczenia 1.9, aby przypomnieć sobie nasz rekurencyjny pomysł.

program cw3_50;

{ Program oblicza naturalna potęgę liczby całkowitej }

{ za pomocą funkcji rekurencyjnej.    }

{ Katalog r3_10 : 3_50.pas    }

var

A : Integer;

N : Byte;

function PotegaCalkowita (A: Integer; N : Byte) : Integer;

{ Funkcja oblicza N-ta potęgę liczby A, dla całkowitego A }

{ i naturalnego N.    }

begin

if N-0 then

PotegaCalkowita := 1 else

if (N mod 2-0) then

PotegaCalkowita Sqr (PotegaCalkowita (A, N div 2))


Wyszukiwarka

Podobne podstrony:
a1 Silniaa program cw3_47; { Program oblicza N! za pomocą funkcji Siln { Katalog r3_10 : 3_47.pas va
trójkąt2 program cw3_52; { Program wypisuje trójkąt ze znaków *. } { Katalog r3_10 : 3_52.pas
89983 trojkąt piogram cw3_52; { Program wypisuje trójkąt ze znaków *. } { Katalog r3_10 : 3_52.pas
BŁĘKITNA MATEMATYKA 1 2 (43) Policz, ile jest koni, a ilu dżokejów. Za pomocą jakich cyfr zapiszesz&
63419 oblicz NWD program cw3_48; { Program znajduje największy wspólny dzielnik A i B { za pomocą fu
a1 Silnia program cw3_37; { Program oblicza N!    } { Katalog r3_08 : 3_37.pas
Jedna z klasycznych zasad programowania mówi, że używanie obliczeń za pomocą wskaźników jest szybsze
Ewaluacja Efekt realizacji zadań powyższego programu zbadam za pomocą obserwacji aktywności oraz
Slajd40 3 Metoda simpleks Najogólniej ujmując, wyznaczenie rozwiązania zadania programowania liniowe
Ewaluacja Efekt realizacji zadań powyższego programu zbadam za pomocą obserwacji aktywności oraz
Ewaluacja Efekt realizacji zadań powyższego programu zbadam za pomocą obserwacji aktywności oraz
Image33 (5) Programowanie ■ Programowanie ■ momencie za pomocą klawisza pauzy na pasku narzędziowym
Uniwersalny URC22B PROGRAMOWANIE ZA POMOCĄ FUNKCJI PEŁNEGO PRZESZUKIWANIA I Skierować pilot w kierun
Koncepcja języka programowania Formalizm, za pomocą którego zapisywane są reguły w odniesieniu do

więcej podobnych podstron