~Wolf~
01-03-2020, 02:44 PM
Algoritm pentru calcularea factorialului unui numar natural
Varianta standard
#include <iostream>
using namespace std;
unsigned int n,p=1; // n-numarul , p-produsul
int main()
{
cin>>n;
while(n) // cat timp n diferit de 0
{
p*=n; //facem produsul descrescator, adica pt n=7, p va fi p=1*7 , n=n-1 , adica n=7-1=6, apoi n=6, p=7*6, n=5 etc
n--; //cum spuneam , scadem numarul cu cate 1 pentru a obtine factorialul
}
cout<<"Factorialul numarului dat este: "<<p;
return 0;
}
Varianta cu functie
#include <iostream>
using namespace std;
unsigned int n,p=1;
unsigned int factorial(unsigned int n) //prototipul functiei
{
//exact acelasi algoritm ca in varianta standard
while(n)
{
p*=n;
n--;
}
return p; // returnam produsul care este, defapt, factorialul
}
int main()
{
cin>>n;
cout<<"Factorialul numarului dat este: "<<factorial(n);
return 0;
}
Varianta recursiva
#include <iostream>
using namespace std;
unsigned int n,p=1;
unsigned int factorial(unsigned int n,unsigned int p) //prototipul functiei
{
if(n<=1) //conform matematicii , 0!=1 , 1!=1
return 1;
return n*factorial(n-1); //se va calcula descrescator, adica pentru n=7 , 7!=7*6*5*4*3*2*1
}
int main()
{
cin>>n;
cout<<"Factorialul numarului dat este: "<<factorial(n);
return 0;
}
Varianta standard
#include <iostream>
using namespace std;
unsigned int n,p=1; // n-numarul , p-produsul
int main()
{
cin>>n;
while(n) // cat timp n diferit de 0
{
p*=n; //facem produsul descrescator, adica pt n=7, p va fi p=1*7 , n=n-1 , adica n=7-1=6, apoi n=6, p=7*6, n=5 etc
n--; //cum spuneam , scadem numarul cu cate 1 pentru a obtine factorialul
}
cout<<"Factorialul numarului dat este: "<<p;
return 0;
}
Varianta cu functie
#include <iostream>
using namespace std;
unsigned int n,p=1;
unsigned int factorial(unsigned int n) //prototipul functiei
{
//exact acelasi algoritm ca in varianta standard
while(n)
{
p*=n;
n--;
}
return p; // returnam produsul care este, defapt, factorialul
}
int main()
{
cin>>n;
cout<<"Factorialul numarului dat este: "<<factorial(n);
return 0;
}
Varianta recursiva
#include <iostream>
using namespace std;
unsigned int n,p=1;
unsigned int factorial(unsigned int n,unsigned int p) //prototipul functiei
{
if(n<=1) //conform matematicii , 0!=1 , 1!=1
return 1;
return n*factorial(n-1); //se va calcula descrescator, adica pentru n=7 , 7!=7*6*5*4*3*2*1
}
int main()
{
cin>>n;
cout<<"Factorialul numarului dat este: "<<factorial(n);
return 0;
}