а чем классический вариант не нравится? int fact(int x) { if(x != 0 && x > 0) return x * fact(x-1); else return 1; } Если без рекурсии int temp = 1; int fact_var; cin >> fact_var; while (fact_var > 0) { temp *= (fact_var--); /* temp = temp * fact_var; fact_var = fact_var - 1;*/ }