On appelle "palindrome" un mot ou une phrase qui se lit de la
même façon à l'endroit comme à l'envers, sans tenir compte des espaces.
exemple : le mot "ABCBA" est un palindrome.
La phrase "ESOPE RESTE ET SE REPOSE" (sans tenir compte des espaces on obtient le mot "ESOPERESTEETSEREPOSE") se lit de façon identique de la gauche vers la droite ou de la droite vers la gauche.
L'algorithme qui teste si un mot est un palindrome est extrêmement simple:
- un mot de longueur 0 (le mot vide, ou en programmation, la variable string '') est un palindrome
- un mot de longueur 1 (donc une lettre) est un palindrome
- un mot est un palindrome si sa première lettre est identique à sa dernière et si son intérieur (le sous-mot commençant à la deuxième position et finissant à l'avant dernière lettre: dans le cas de "ABCBA" le sous-mot est "BCB") est un palindrome.
On voit donc à cette dernière ligne l'apparition de la récursivité : "un mot est un palindrome si... et si son sous-mot est un palindrome".
Voici le programme qui teste si un mot est un palindrome:
function palindrome(s: string): boolean;
begin
if length(s) < 2 then
palindrome := true
else
if (s[1] = s[length(s)]) then
palindrome := palindrome(copy(s, 2, length(s) - 2))
else
palindrome := false;
end;
Télécharger le code source Delphi