admin
|
 |
« : 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
|
 |
« 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
|
 |
« 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
|
 |
« 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
|
 |
« 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
|
 |
« 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
|
 |
« 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
|
|
|
|
|