2010-12-01 8 views
1

Mon travail consiste à créer une méthode statique récursive qui reçoit en tant que paramètre un arrayliste d'entiers. Dites qu'il y a des éléments qui ont une valeur de 0 et que je veux passer à 5, les éléments qui ont une valeur de 1 sont supprimés, et les éléments qui ont une valeur de 2 sont déplacés à la fin. Le reste reste tel quel.Récursivité, Arraylist

Je peux penser à des façons de le faire sans utiliser la récursivité, mais comment pourrais-je résoudre ce problème en utilisant la récursivité?

Merci.

Répondre

2

Votre cas de base est une liste de longueur 1, facile à gérer.

Une liste de longueur 2, où vous savez que le dernier élément a déjà été traité, n'est que légèrement plus difficile à traiter.

Une liste de longueur N, où vous savez que les derniers éléments N-1 ont été traités, devrait être gérable. Donc, ce que vous pouvez faire est de prendre la liste, passer la liste moins le premier élément au niveau de récursion suivant, puis quand vous obtenez la sous-liste traitée, traiter avec ce premier élément.

@Steven Schlansker a raison, cependant, ce n'est pas vraiment une tâche récurrente.

3

Cela ne ressemble pas du tout à un problème qui se prête à la récursivité pour moi. Cela dit, si vous avez désespérément besoin de le faire, cherchez à utiliser List.subList pour construire artificiellement un cas "récursif" (en coupant les éléments du recto) et utilisez un cas "de base" d'une liste vide.

+0

Et n'oubliez pas d'appliquer le tri à la fin. Vous pouvez le faire avant de commencer tout ça, mais le faire à la fin vous fait gagner un peu de temps car il y aurait moins d'éléments, très probablement. –

+0

"Le devoir ** est ** de créer une méthode statique récursive". On dirait que la récursivité est une exigence ici. –

+0

@Andreas_D: Ne signifie pas que vous ne pouvez pas vous plaindre à ce sujet! –