Exercicis Recursivitat

(*) elteuusuari correspon a la direcció de correu eltectrònic del centre, sense punts, fins a @itb.cat

Sumari

  1. N pometes
  2. MultiplicationRecursive
  3. DotLineRecursive
    1. input
    2. output
    3. ArrayMaxValueRecursive
  4. AnotherInverseOrderRecursive
    1. input
    2. output
  5. SlowUpDownArray
    1. Input
    2. Output

N pometes

N pometes té el pomer,
de N una, de N una,
N pometes té el pomer,
de N una en caigué.

Si mireu el vent d'on vé
veureu el pomer com dansa,
si mireu el vent d'on vé
veureu com dansa el pomer.
public String getAppleSongStanza(int applesCount){
    return String.format("%1$d pometes té el pomer,%nde %1$d una, de %1$d una,%n" +
            "%1$d pometes té el pomer,%nde %1$d una en caigué.%nSi mireu el vent d'on vé%n" +
            "veureu el pomer com dansa,%nsi mireu el vent d'on vé%n" +
            "veureu com dansa el pomer.%n", applesCount);
}
public String getAppleSong(int applesCount);

MultiplicationRecursive

Calcula el producte de dos naturals mitjançant la suma i crides recursives.

input: 5 3
output: 15

DotLineRecursive

input

10

output

..........

ArrayMaxValueRecursive

L'usuari introduirà 1 array d'enters, com s'indica al mètode ArrayReader.
Un cop llegits tots, printa per pantalla el valor més gran.
Usa una funció recursiva per calcular el màxim.

AnotherInverseOrderRecursive

L'usuari entrarà un conjunt d'enters per pantalla. Quan introdueixi el -1, és que ja ha acabat.
Imprimeix-los en l'odre invers al que els ha entrat.
Usa una funció recursiva.

input

1 2 3 4 8 2 -1

output

[2, 8, 4, 3, 2, 1]

SlowUpDownArray

Definirem un SlowUpDown array com una llista de números que, la diferència cada número i el següent hi ha una diferencia de 1.

Un exemple de SlowUpDown array és el següent:
1 2 3 4 5 4 3 4 5 6 5 4 3 2

Volem fer un progama que donat un array amb alguns valors deternimants i algunes incognites ens indiqui si podem crear un SlowUpDown array.
Per exemple, si tenim el següent array:
5 ? ? ? ? ? 11 ? 11 ? ? 8

Podem crear el SlowUpDown array següent
5 6 7 8 9 10 11 10 11 10 9 8

L'usuari introduirà primer la llargada de l'array. Després introduirà les diferents caselles fixades. Escriurà -1 quan ja hagi acabat.
Si pots costruir un SlowUpDown array imprimeix-lo, o imprimeix "impossible" en cas contrari.
Nota: la primera casella i l'última del array sempre estaran definides.

Input

12
0 5
6 11 
8 11
11 8

Output

[5, 6, 7, 8, 9, 10, 11, 10, 11, 10, 9, 8]