diff --git a/NetBeans Projects/Ricorsione/src/ricorsione/Ricorsione.java b/NetBeans Projects/Ricorsione/src/ricorsione/Ricorsione.java new file mode 100644 index 0000000..02464c6 --- /dev/null +++ b/NetBeans Projects/Ricorsione/src/ricorsione/Ricorsione.java @@ -0,0 +1,61 @@ +package ricorsione; + +/** + * Collezione di metodi ricorsivi + * @author radaelli11353 + */ +public class Ricorsione { + /** + * metodo statico ricorsivo che conta quanti numeri dispari sono presenti + * in un array di interi + * @param x array di interi + * @param pos posizione dell'ultimo elemento + * @return quanti numeri dispari sono presenti nell'array + */ + public static int contaDispari(int[] x, int pos) { + if(pos < 0) return 0; + int contatore = (x[pos] % 2 == 1) ? 1 : 0; + + return contatore + contaDispari(x, pos - 1); + } + + /** + * metodo statico ricorsivo che restituisce la somma degli elementi + * di un array di interi + * @param x array di interi + * @param pos posizione dell'ultimo elemento + * @return somma degli elementi dell'array + */ + public static int somma(int[] x, int pos) { + if(pos < 0) return 0; + int contatore = x[pos]; + + return contatore + somma(x, pos - 1); + } + + /** + * metodo statico ricorsivo che verifica se una stringa x è contenuta + * nella stringa y + * @param x stringa che deve essere contenuta + * @param y stringa che deve contenere + * @param pos posizione iniziale + * @return x è contenuta in y + */ + public static boolean cerca(String x, String y, int pos) { + if (y.length() - pos < x.length()) return false; + + if (y.substring(pos, pos + x.length()).equals(x)) { + return true; + } + + return cerca(x, y, pos + 1); + } + + + public static void main(String[] args) { + int[] array = {1, 2, 3, 4, 5, 6}; + System.out.println(contaDispari(array, array.length - 1)); + System.out.println(somma(array, array.length - 1)); + System.out.println(cerca("Test", "Testare", 0)); + } +}