Cześć, chciałem zrobić program, który porównuje szybkość działania podejścia iteracyjnego i rekurencyjnego przy obliczaniu silnii, ale przy iteracyjnym coś chyba idzie źle, ponieważ program nie chce się wykonać i nie za bardzo wiem o co chodzi. Czy ktoś jest w stanie mi wyjaśnić, gdzie robię błąd, albo nakierować?
#include <iostream>
#include <time.h>
#include <cstdlib>
#include <windows.h>
using namespace std;
int liczba;
clock_t start, stop;
double czas1, czas;
unsigned long long wynik[1000];
void iter(int m)
{
for(int i=m; i>0; i--)
{
if(i==m)
{
wynik[i] = m;
}
else
{
wynik[i] = wynik[i+1]*i;
}
}
}
unsigned long long silnia(int n)
{
if(n==0) return 1;
else return n*silnia(n-1);
}
int main()
{
cout << "Ile liczb: ";
cin >> liczba;
start = clock();
silnia(liczba);
stop = clock();
czas = (stop - start) / CLOCKS_PER_SEC;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),14);
cout << "PODEJSCIE REKURENSYJNE" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
cout << liczba << " silnia = " << silnia(liczba) << ", czas wykonania operacji: " << czas << endl << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),14);
cout << "PODEJSCIE ITERACYJNE" << endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
start = clock();
iter(liczba);
stop = clock();
czas1 = (stop - start) / CLOCKS_PER_SEC;
cout << liczba << " silnia = " << iter(liczba) << ", czas wykonania operacji: " << czas1 << endl << endl;
return 0;
}