Darmowe Forum

C+++ => A Kuba powiedzia³ => W±tek zaczêty przez: admin Grudzieñ 12, 2012, 10:57:46



Tytu³: Funkcja rekurencyjna
Wiadomo¶æ wys³ana przez: admin Grudzieñ 12, 2012, 10:57:46
Funkcjê rekurencyjn± nazywamy tak± funkcjê która wywo³uje sam± siebie.

Uwaga: Funkcja taka musi posiadaæ warunek zakoñczenia rekurencji. Je¿eli takiego warunku by nie posiada³a funkcja wywo³ywa³a by siebie bez koñca.

Zalety czyli dlaczego mo¿na jej u¿yæ: Funkcja taka jest wykonywana trochê wolniej ni¿ funkcja nierekurencyjna, ale kod jest zdecydowanie krótszy.

Zadanie 1. Napisaæ program który korzystaj±c z funkcji silnia wy¶wietli warto¶æ silni wprowadzanej z klawiatury liczby

#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

int x;
long int silnia( long int x)
{
   if(x<=1)
      {return 1;}
   else
   {return x*silnia(x-1);}
}
int main(int argc, char *argv[])
{long int y;
cout<<endl<<"Podaj liczbê (1-30):"; cin>>y;
cout<<endl<<"Silnia z liczby "<<y<<" = "<<silnia(y)<<endl;
system ("pause");
}


Tytu³: Odp: Funkcja rekurencyjna
Wiadomo¶æ wys³ana przez: admin Grudzieñ 12, 2012, 12:34:03
Zadanie, wykorzystuj±ce rekurencjê do obliczenia sumy liczb od 1 do wprowadzonej warto¶ci.

#include <cstdlib>
#include <iostream>

using namespace std;
void imie1(void);
int x;
long int suma( long int x)
{
   if(x<=1)
      {return 1;}
   else
   {return (x+suma(x-1));}
}
int main(int argc, char *argv[])
{long int y;
cout<<endl<<"Podaj liczbê do ktorej liczyc sume:"; cin>>y;
cout<<endl<<"Suma z liczb od 1 do "<<y<<" = "<<suma(y)<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}


Tytu³: Odp: Funkcja rekurencyjna
Wiadomo¶æ wys³ana przez: admin Grudzieñ 19, 2012, 09:16:21
Przyk³ad 3 Przedstawiaj±cy porównanie algorytmu rekurencyjnego  z iteracyjnym, przy obliczaniu silni z podanej liczby.

#include <cstdlib>
#include <iostream>

using namespace std;
int y;
long int silnia(long int x) //to jest funkcja rekurencyjna//
{if(x<=1){return 1;}else
{return x*silnia(x-1);} }

long int silnia1(long int x) //to jest funkcja z algorytmem iteracyjnym//
{int a,s=1;
for(a=1;a<=x;a++){s=s*a;}
return s;}

int main(int argc, char *argv[])
{cout<<"Podaj liczbe: "; cin>>y;
cout<<endl<<"Silnia liczby "<<y<<" = "<<silnia(y)<<endl;
cout<<endl<<"Silnia liczby "<<y<<" = "<<silnia1(y)<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}





Tytu³: Odp: Funkcja rekurencyjna
Wiadomo¶æ wys³ana przez: admin Grudzieñ 19, 2012, 09:45:20
Zadanie 4. Wersja zadania poprzedniego powiêkszona o dodawanie.

#include <cstdlib>
#include <iostream>

using namespace std;
int y;
long int silnia(long int x)
{if(x<=1){return 1;}else
{return x*silnia(x-1);} }

long int silnia1(long int x)
{int a,s=1;
for(a=1;a<=x;a++){s=s*a;}
return s;}

long int sumarek(long int x){if(x<=1){return 1;} else
{return x+sumarek(x-1);}}

long int sumait(long int x){
int suma=0;
for(int a=1;a<=x;a++){suma=a+suma;}
return suma;}

int main(int argc, char *argv[])
{cout<<"Podaj liczbe: "; cin>>y;
cout<<endl<<"Silnia liczby "<<y<<" = "<<silnia(y)<<endl;
cout<<endl<<"Silnia liczby "<<y<<" = "<<silnia1(y)<<endl;
cout<<endl<<"Suma liczb od 1 do "<<y<<" = "<<sumarek(y)<<endl;
cout<<endl<<"Suma liczb od 1 do "<<y<<" = "<<sumait(y)<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}


Polityka cookies
Darmowe Fora | Darmowe Forum

mylittlepony zlotasiodemka blackmoon shaggydogss spw