Nel primo caso useremo la ricorsione, dove un metodo chiama se stesso per la soluzione, e nel secondo caso useremo un loop come ciclo for e while per ottenere l'iterazione. Per creare una soluzione ricorsiva, abbiamo bisogno di un caso base in cui il programma termina e la ricorsione si interrompe. Vediamo che il caso base è fattoriale di 1, che è 1, quindi quando la tua funzione chiama fattoriale(1) puoi semplicemente restituire 1 senza eseguire alcun calcolo. E, se il numero è maggiore di 1, continuiamo ad applicare la formula fattoriale ricorsivamente chiamando lo stesso fattoriale con n - 1. Una volta che l'input diventa 1, il metodo interrompe la chiamata ricorsiva e restituisce 1. Da lì in poi lo stack del metodo ha iniziato a scorrere verso il basso e infine viene calcolato e restituito il fattoriale di un numero. Usando invece l'iterazione, e quindi il ciclo for per calcolare il fattoriale n! = n(n-1)(n-2)…..1. Puoi vedere che iniziamo con il numero e lo moltiplichiamo per il fattoriale che è inizializzato con 1, quindi riduciamo il numero di una unità fino a quando il numero diventa 1, che non è altro che n(n-1)(n-2) …..1. import java.util.Scanner; public class Factorial{ public static int recursiveFactorial(int n) { if( n <= 1) { return 1; } else { return n * recursiveFactorial( n - 1 ); } } public static int iterativeFactorial(int n){ int result = 1; for (int i = 1; i <= n; i++) { result = result * i; } return result; } public static void main(String[] args){ Scanner input = new Scanner(System.in); // input System.out.println(\\"Insert an integer number: \\"); int numero = input.nextInt(); if ( numero < 0 ){ System.out.println(\\"The number must be positive!\\"); System.exit(0); } System.out.println(\\"Recursive Factorial is: \\" + recursiveFactorial(numero)); System.out.println(\\"Iterative Factorial is: \\" + iterativeFactorial(numero)); input.close(); } }