Tytuł: Funkcja - Rekurencja Wiadomość wysłana przez: 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"); } Tytuł: Odp: Funkcja - Rekurencja Wiadomość wysłana przez: admin 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. Tytuł: Odp: Funkcja - Rekurencja Wiadomość wysłana przez: admin 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; } Tytuł: Odp: Funkcja - Rekurencja Wiadomość wysłana przez: admin 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;} Tytuł: Odp: Funkcja - Rekurencja Wiadomość wysłana przez: admin 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"); } Tytuł: Odp: Funkcja - Rekurencja Wiadomość wysłana przez: admin 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.
Tytuł: Odp: Funkcja - Rekurencja Wiadomość wysłana przez: admin 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"); } |