Darmowe Forum
Kwiecień 14, 2025, 14:11:54 *
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Forum zostaÂło uruchomione!
 
   Strona główna   Pomoc Zaloguj się Rejestracja  
Strony: [1]
  Drukuj  
Autor Wątek: Funkcja - Rekurencja  (Przeczytany 6154 razy)
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« : Listopad 30, 2011, 10:44:32 »

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;
void imie1(void);
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");
}
« Ostatnia zmiana: Listopad 30, 2011, 10:52:41 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #1 : Listopad 30, 2011, 10:59:07 »

Polecenie unsigned  (ang. nieoznaczone). OkreÂśla wartoœÌ liczby bez znaku -.
JeÂżeli napisano unsigned int oznacza to zakres liczb int bez znaku ujemnego, wartoÂści ujemne "przechodzÂą " na dodatnie.
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #2 : Grudzień 02, 2011, 11:39:10 »

Zadanie 2. NapisaĂŚ program proszÂący o podanie liczby. NastĂŞpnie obliczyĂŚ silnie z podanej liczby. W programie nie korzystaĂŚ z deklaracji funkcji.

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{int a,b,c;
a=1;
cout<<"Podaj liczbe: ";cin>>b;
if (b>=1){for(c=1;c<=b;c++){a=a*c;}}
cout<<endl<<"silnia= "<<a<<endl;
 system("PAUSE");
    return EXIT_SUCCESS;
}
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #3 : Grudzień 02, 2011, 12:19:11 »

Zadanie 3. ProszĂŞ napisaĂŚ program obliczajÂący silniĂŞ. W programie wykorzystaĂŚ funkcjĂŞ. Funkcja nie moÂże byĂŚ funkcjÂą rekurencyjnÂą.

#include <cstdlib>
#include <iostream>

using namespace std;
int silnia( int z);
int main(int argc, char *argv[])
{int b;
cout<<"Podaj liczbe: ";cin>>b;

cout<<endl<<"silnia= "<<silnia (b)<<endl;
 system("PAUSE");
    return EXIT_SUCCESS;}
int silnia( int z)
{int c,a=1;
    if (z>=1){for(c=1;c<=z;c++){a=a*c;}}
return a;}
« Ostatnia zmiana: Grudzień 02, 2011, 12:22:55 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #4 : Grudzień 02, 2011, 12:22:35 »

Zadanie 4. NapisaĂŚ program, ktĂłry prosi o podanie liczby. NastĂŞpnie korzystajÂąc z funkcji rekurencyjnej obliczy sumĂŞ liczb od do do podanej liczby.

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

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ĂŞ (1-30):"; cin>>y;
cout<<endl<<"Suma z liczby "<<y<<" = "<<suma(y)<<endl;
system ("pause");
}
« Ostatnia zmiana: Grudzień 02, 2011, 12:52:33 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #5 : Grudzień 02, 2011, 13:03:00 »

Zadanie 5 . NapisaÌ program który prosi o podanie iloœci pieniêdzy do wyp³aty , nastêpnie wyp³aca podan¹ kwotê w najmniejszej liczbie nomina³ów.
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #6 : Grudzień 14, 2011, 08:32:24 »

Zadanie 6. NapisaĂŚ program korzystajÂąc z funkcji rekurencyjnej , ktĂłry obliczy sumĂŞ liczb z przedziaÂłu podanego przez uÂżytkownika.


#include <cstdlib>
#include <iostream>

using namespace std;
int x;
long int suma( long int x, long int v)
{
   if(x<=v)
      {return v;}
   else
   {return x+suma(x-1,v);}
}

int main(int argc, char *argv[])
{long int y,c;
cout<<endl<<"Podaj liczbĂŞ od ktorej ma liczyc:"; cin>>c;
cout<<endl<<"Podaj liczbĂŞ do ktorej ma liczyc sume :"; cin>>y;
cout<<endl<<"Suma od liczby "<<c<<"do "<<y<<" = "<<suma(y,c)<<endl;
system ("pause");
}

Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap

Polityka cookies
Darmowe Fora | Darmowe Forum

blackmoon spw moikrewni mylittlepony gang-nd