Ejemplos recursividad



1. Escribir un método que devuelva la cadena formada por la concatenación de todos los elementos mayores que un elemento pasado como parámetro

      private String concatMayoresRec(LinearNode<T> lista, T element){
                                                             String listaconcat = "";
                         
                                                     if (lista!=null) {
                                                                        T aux =  lista.getElem();                                                     T elem =  element;
                                                                                            if ( ((Comparable<T>) aux).compareTo(elem) >0){
listaconcat = aux+ concatMayoresRec(lista.getNext(), element);
                                                                            }else{
                                                                                                                         listaconcat = concatMayoresRec(lista.getNext(), element);
                                                                         }
                                                 }
                                                           return listaconcat;
                                                 
                         }
 public String concatMayores(T element) {
                         
  String cadena= concatMayoresRec(head, element);    return cadena;
                         }



2. Escribir un método recursivo que devuelva la lista inversa de la lista original (o this).

public OrderedListADT<T> invierte() {
                                               LinkedOrderList<T> inversion = new LinkedOrderList<T>();
  invierteRec(head, inversion );   return inversion;
                 }
                                                                           private OrderedListADT<T> invierteRec (LinearNode <T> lista, LinkedOrderList<T> inversion){
                                         if (lista != null){
                                                             invierteRec(lista.getNext(), inversion);
                                                 
                                                         T inver = lista.getElem();
                                                 
                                                        inversion.addLast(inver);
                 
                                 }
                                      return inversion;
                                 
                 }
                      Otra posible implementación

                                                                           private OrderedListADT<T> invierteRec (LinearNode <T> lista, LinkedOrderList<T> inversion){
                                if (lista != null){                                        T inver = lista.getElem();
                                                 
                                                        inversion.addFirst(inver);
                 

                                                             invierteRec(lista.getNext(), inversion);
                                 }
                                      return inversion;
                                 

                 }



3. Escribir un método que calcule la cadena formada por los elementos del primero al último seguido de guión y la concatenación del último al primero. Si la lista es (a,b,c,d) la cadena calculada sería “abcd-dcba”.  

public String concatElemAscDesc() {   String cadena= concatElemAscDescRec(head); 
                                    return cadena;

                                 
                 }
                                 private String concatElemAscDescRec (LinearNode<T> lista){
                      String li = "";
                 
                         if (lista!=null) {
                 
                                   li = lista.getElem()+ concatElemAscDescRec (lista.getNext());
                           li= li  +  lista.getElem();
                 
                 }
 else {   li= li + "-";
                 }
                    return li;

                 }