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 blackmoon proskills polski-serwer-rpg articz