logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

Lezioni di PHP - Lezione 9 - Ricorsione

09/10/2025, by Ivan

Nella lezione precedente abbiamo imparato a usare le funzioni in PHP. Ora approfondiremo un po’ di più il loro utilizzo. Finora abbiamo visto funzioni di questo tipo:

<?php
function myFunction(){ // definizione della funzione

}

$x = myFunction(); // chiamata della funzione
?>

Ma cosa succede se chiamiamo una funzione all’interno di se stessa?

<?php
function myFunction(){
  $x = myFunction();
  ...
  return $x;
}

$y = myFunction();

Questo tipo di chiamata — quando una funzione invoca se stessa — si chiama ricorsione. Può sembrare complicato in teoria, ma in pratica è molto più semplice.

Creiamo, per esempio, una funzione per calcolare la potenza di un numero. Dalla matematica sappiamo che una potenza di grado n significa moltiplicare il numero per se stesso n volte. In PHP può essere fatto così:

<?php
function myDegree($x, $n){
  if($n == 0){
    return 1;
  }
  if($n < 0){
    return myDegree(1/$x, -$n); // -$n inverte il segno da negativo a positivo
  }
  return $x * myDegree($x, $n-1); // chiamata ricorsiva
}

$y = myDegree(2, -4); // prima chiamata della funzione
print $y;
?>

Analizziamo questa funzione passo dopo passo. Ricorda che dopo return la funzione smette di eseguire codice e restituisce il valore indicato.

Il primo if($n == 0) controlla se l’esponente è zero: in tal caso restituisce 1 (qualsiasi numero elevato alla potenza 0 è uguale a 1).
Il secondo if($n < 0) gestisce le potenze negative: trasformiamo l’esponente in positivo e prendiamo il reciproco del numero, come previsto dalla definizione matematica.

Infine, se l’esponente non è né zero né negativo, la funzione richiama se stessa riducendo l’esponente di 1, moltiplicando il numero per il risultato della chiamata successiva.

Vediamo le iterazioni passo per passo:

1. Esponente = -4, numero = 2.
Viene eseguito il secondo if, il numero diventa frazione e l’esponente positivo.

2. Esponente = 4, numero = 0,5.
L’esponente è positivo e diverso da zero, quindi viene eseguita questa riga:

return $x * myDegree($x, $n-1);

3. Esponente = 3, numero = 0,25.
4. Esponente = 2, numero = 0,125.
5. Esponente = 1, numero = 0,0625.

Qui scatta il primo if, la funzione restituisce 1 e i valori vengono moltiplicati a ritroso, completando la ricorsione.

Un altro esempio classico di ricorsione è il calcolo del fattoriale. Il fattoriale di un numero n è il prodotto di tutti i numeri da 1 a n. Ad esempio, per 6 il risultato è 6×5×4×3×2×1 = 720. Usiamo la ricorsione anche qui:

<?php
function myRecursion($x){
  if($x == 1){
    return $x;
  }
  return $x * myRecursion($x-1);
}

$y = myRecursion(8);
print $y;
?>

Questo esempio è ancora più semplice del precedente. Ti lascio analizzare da solo come cambiano i parametri della funzione myRecursion() a ogni chiamata.