Darmowe Forum
Maj 19, 2024, 16:30:17
Witamy,
Gość
.
Zaloguj się
lub
zarejestruj
.
Czy dotarł do Ciebie
email aktywacyjny?
1 Godzina
1 Dzień
1 Tydzień
1 Miesiąc
Zawsze
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
Darmowe Forum
>
C+++
>
A Kuba powiedział
>
Funkcja rekurencyjna
Strony: [
1
]
« poprzedni
następny »
Drukuj
Autor
Wątek: Funkcja rekurencyjna (Przeczytany 2777 razy)
admin
Administrator
Ekspert
Wiadomości: 821
Funkcja rekurencyjna
«
:
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");
}
«
Ostatnia zmiana: Styczeń 02, 2013, 11:54:47 wysłane przez admin
»
Zapisane
admin
Administrator
Ekspert
Wiadomości: 821
Odp: Funkcja rekurencyjna
«
Odpowiedz #1 :
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;
}
Zapisane
admin
Administrator
Ekspert
Wiadomości: 821
Odp: Funkcja rekurencyjna
«
Odpowiedz #2 :
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;
}
«
Ostatnia zmiana: Grudzień 19, 2012, 09:22:19 wysłane przez admin
»
Zapisane
admin
Administrator
Ekspert
Wiadomości: 821
Odp: Funkcja rekurencyjna
«
Odpowiedz #3 :
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;
}
Zapisane
Strony: [
1
]
Drukuj
« poprzedni
następny »
Skocz do:
Wybierz cel:
-----------------------------
Zadanie C++ lutego -Agnieszka
-----------------------------
=> Nowy dział
=> Zadanie
-----------------------------
E14
-----------------------------
=> DIV
=> Java Script
=> php
-----------------------------
Dla Magdy i Wojtka
-----------------------------
=> Liczby dwójkowe
-----------------------------
Przykłady stron internetowych
-----------------------------
=> Strona zbudowana z tabelek
-----------------------------
Podstawy PHP
-----------------------------
=> Przesyłanie danych z formularza php
=> Pętle w php
-----------------------------
Java Script
-----------------------------
=> Java Script
-----------------------------
C++ Nowe rozdanie
-----------------------------
=> C++
-----------------------------
Java JDK
-----------------------------
=> Java ale nie Script
-----------------------------
Hyde Park
-----------------------------
=> Informacje
-----------------------------
C+++
-----------------------------
=> A Kuba powiedział
-----------------------------
Multimedia
-----------------------------
=> Photoshop
=> Nowy dział
=> Java Script
=> Corel
-----------------------------
Html-strony internetowe
-----------------------------
=> Podstawy HTML- ramki/ frames
=> Podstawy HTML- tabelki
-----------------------------
C++
-----------------------------
=> Podstawy C++ cz. I
=> Kompilatory C++
=> Programowanie obiektowe w C++
=> Problem w C++
=> Podstawy
=> C++ po raz pierwszy
-----------------------------
Turbo Pascal
-----------------------------
=> Turbo Pascal semestr II
=> Projekt AŚKA
=> Turbo Pascal semestr I
=> Podstawy Turbo Pascal
Ładowanie...
Polityka cookies
Darmowe Fora
|
Darmowe Forum
linkinparknewsrevolution
x-cry
gangem
wilczezycie
magicznestworzenia11