RafSa ha scritto:
Salve, come da titolo , il docente stava facendo vedere un esempio di calcolo fattoriale e ha riportato questo codice :
#include <iostream>
using namespace std;
int fattoriale(int n)
{
if (n<=2) {
return 1;
} else {
return n * fattoriale(n-1);
}
}
int main() {
cout<<fattoriale(5)<<endl;
return 0;
}
Io ho fatto notare che è sbagliato in quanto , se ad esempio volessi calcolare 5! , mi riporta 60 anzichè 120 poichè entrando nell'f quando si arriva a 2 , me lo calcola come 1 e quindi non moltiplica 60x2 ..... sbaglio io che mi sto rincretinendo o sbaglia lui? tra l'altro il fattoriale di 2 è 2 bah
Con tutto il rispetto, per il professore, hai ragione tu.
Io la funzione la fare così:
#include <iostream>
using namespace std;
int fattoriale(int n)
{
if (n<=1) {
return 1;
} else {
return n * fattoriale(n-1);
}
}
int main() {
cout<<fattoriale(5)<<endl;
return 0;
}
Secondo me è abbastanza chiaro... Anche perché 0! per definizione è 1....
A mio modesto parere la tua obiezione è corretta.
Un saluto!