Je comprends très bien que l'on puisse avoir envie d'utiliser une méthode dans un but pédagogique. Je vous signale néanmoins: tableau = tableau[::-1] ou mieux: tableau.reverse()
Il se trouve que la récursivité n'est pas ici à mon sens une très bonne solution. Et puis il vous faut définir votre récursivité. Là, vous joutez à un élément (un entier) le retour de inversTab2(), c'est à dire None.
Vous pourriez peut-être faire artificiellement une fonction récursive, avec une fonction-lanceur pour respecter l'interface:
Je comprends très bien que l'on puisse avoir envie d'utiliser une
méthode dans un but pédagogique. Je vous signale néanmoins:
tableau = tableau[::-1]
ou mieux:
tableau.reverse()
Il se trouve que la récursivité n'est pas ici à mon sens une très bonne
solution. Et puis il vous faut définir votre récursivité. Là, vous
joutez à un élément (un entier) le retour de inversTab2(), c'est à dire
None.
Vous pourriez peut-être faire artificiellement une fonction récursive,
avec une fonction-lanceur pour respecter l'interface:
Je comprends très bien que l'on puisse avoir envie d'utiliser une méthode dans un but pédagogique. Je vous signale néanmoins: tableau = tableau[::-1] ou mieux: tableau.reverse()
Il se trouve que la récursivité n'est pas ici à mon sens une très bonne solution. Et puis il vous faut définir votre récursivité. Là, vous joutez à un élément (un entier) le retour de inversTab2(), c'est à dire None.
Vous pourriez peut-être faire artificiellement une fonction récursive, avec une fonction-lanceur pour respecter l'interface:
Je vous remercie de ces précisions, je suis tout à fait d'accord sur le fait que la version récursive consomme plus de mémoire que la version itérative.
Mai pour apprendre un langage, je pense qu'il vaux mieux travail sur de petit exercices en utilisant plusieurs algorithme, que de faite un gros programme avec 80% d'interface opérateur.
PS : je n'aime pas perl
Je vous remercie de ces précisions, je suis tout à fait d'accord sur
le fait que la version récursive consomme plus de mémoire que la
version itérative.
Mai pour apprendre un langage, je pense qu'il vaux mieux travail sur
de petit exercices en utilisant plusieurs algorithme, que de faite un
gros programme avec 80% d'interface opérateur.
Je vous remercie de ces précisions, je suis tout à fait d'accord sur le fait que la version récursive consomme plus de mémoire que la version itérative.
Mai pour apprendre un langage, je pense qu'il vaux mieux travail sur de petit exercices en utilisant plusieurs algorithme, que de faite un gros programme avec 80% d'interface opérateur.
Je n'avais d'autre ambition que de corriger une paire d'erreurs évidentes - pour ce qui est de la correction de l'algo (et de sa pertinence), c'est l'affaire de l'OP !-)
Je n'avais d'autre ambition que de corriger une paire d'erreurs
évidentes - pour ce qui est de la correction de l'algo (et de sa
pertinence), c'est l'affaire de l'OP !-)
Je n'avais d'autre ambition que de corriger une paire d'erreurs évidentes - pour ce qui est de la correction de l'algo (et de sa pertinence), c'est l'affaire de l'OP !-)
Comme le disait Bruno, quitte à faire du récursif, autant partir dans le "full-fonctionnel" et éviter les effets de bord. Et là, mes antiques cours de Lisp vont me servir:
def invert_list(l1, l2=()): if not l1: return list(l2) else: return invert_list(l1[1:], [l1[0]] + list(l2))
(NB: c'est un abominable gâchis de ressouces, je sais...)
Question à 0.02€: pourquoi ça marche? ;-)
HTH quand même... -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
On Mon, 10 Mar 2008 11:44:46 +0100, <aquilon11@gmail.com> wrote:
Bonjour
J'ai réalisée une fonction d'inversion de tableau par une méthode
itérative, cela fonction.
Je voudrai réaliser la même fonction avec une méthode récursive, mais
j'ai un problème de concaténation de tableau
[snip]
Comme le disait Bruno, quitte à faire du récursif, autant partir dans le
"full-fonctionnel" et éviter les effets de bord. Et là, mes antiques cours
de Lisp vont me servir:
def invert_list(l1, l2=()):
if not l1:
return list(l2)
else:
return invert_list(l1[1:], [l1[0]] + list(l2))
(NB: c'est un abominable gâchis de ressouces, je sais...)
Question à 0.02€: pourquoi ça marche? ;-)
HTH quand même...
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
Comme le disait Bruno, quitte à faire du récursif, autant partir dans le "full-fonctionnel" et éviter les effets de bord. Et là, mes antiques cours de Lisp vont me servir:
def invert_list(l1, l2=()): if not l1: return list(l2) else: return invert_list(l1[1:], [l1[0]] + list(l2))
(NB: c'est un abominable gâchis de ressouces, je sais...)
Question à 0.02€: pourquoi ça marche? ;-)
HTH quand même... -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"