witam, właśnie skończyłem robić zadanie domowe z 13 odcinka i coś mi nie gra... mianowicie czas wykonywania rekurencji jest o wiele dłuższy od pętli for, dodatkowo czas dziwnie się zachowuje, dając tą samą liczbe raz się robi 0.3 s, raz ponad 4 sekundy... co tym razem zepsułem :/?
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
double start, koniec, czas;
int ile, odliczanie;
long int razem=1;
long int silnia(int n)
{
if (n==0){return 1;}
else return n*silnia(n-1);
}
int main()
{
setprecision(0.00001);
start=clock();
cout<<"jaka liczba silni?"<<endl;
cin>>ile;
cout <<silnia(ile)<<endl;
koniec=clock();
czas=(double)(koniec-start)/CLOCKS_PER_SEC;
cout<<czas<<endl;
start=clock();
odliczanie=1;
for(int i=0; i<ile; i++)
{
razem*=odliczanie;
odliczanie++;
}
cout<<razem<<endl;
koniec=clock();
czas=(double)(koniec-start)/CLOCKS_PER_SEC;
cout<<czas<<endl;
return 0;
}