Witam wszystkich. Jestem nowym użytkownikiem tego forum i jest to mój pierwszy wpis.
Zrobiłem program zliczający czas dwóch funkcji, jedna liczy silnie przez iterację a druga liczy silnie przez rekursję.
Zdarza się, że czas jednej i drugiej funkcji jest taki sam np: 0,000004204043303 i 0,000004204043303, co mnie bardzo dziwi bo to jest niemożliwe żeby dwie różne funkcje zrobił w tym samym czasie. ’
A czasami jest taki, że jedna funkcja trwa 0 a druga 0,48342293832.
Co zrobiłem źle?
#include <iostream>
#include <cstdlib>
#include <time.h>
#include<iomanip>
using namespace std;
clock_t start, stop, start2, stop2;
float czas, czas2;
int silniai(double n)
{
start=clock();
double wynik=1;
for(int i=1;i<=15;i++)
{
wynik=n*wynik;
n--;
}
return wynik;
stop=clock();
}
int f(double n)
{
start2=clock();
if (n==0) return 1;
else return f(n-1)*n;
stop2=clock();
}
int main()
{
cout <<silniai(15)<< endl;
czas=(double)(stop - start)/CLOCKS_PER_SEC;
cout <<setprecision(50)<< czas<<endl;
cout <<f(15)<<endl;
czas2=(double)(stop2 - start2)/CLOCKS_PER_SEC;
cout << setprecision(50) << czas2;
return(0);
}
Dzięki, pozdrawiam
created
last reply
- 3
replies
- 488
views
- 3
users
- 1
like