Aggiunta correzione ricorsione 2

This commit is contained in:
Giacomo R. 2023-06-07 21:53:23 +02:00
parent 9ed76d07ce
commit de3c827937
2 changed files with 32 additions and 10 deletions

View File

@ -75,7 +75,7 @@ main.class=ricorsione.Ricorsione
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false
platform.active=Zulu_17.0.6_10
platform.active=Oracle_OpenJDK_20_36
run.classpath=\
${javac.classpath}:\
${build.classes.dir}

View File

@ -9,30 +9,52 @@ import java.util.ArrayList;
public class Ricorsione2 {
public static ArrayList<Integer> scomposizioneFattoriPrimi(int n) {
ArrayList<Integer> fattori = new ArrayList<>();
scomposizioneFattoriPrimi(n, fattori);
return fattori;
}
public static void scomposizioneFattoriPrimi(int n, ArrayList<Integer> x) {
if(n == 1) return;
for (int i = 2; i <= n; i++) {
if (n % i == 0) {
fattori.add(i);
x.add(i);
n = n / i;
break;
}
}
if (n > 1) {
fattori.addAll(scomposizioneFattoriPrimi(n));
scomposizioneFattoriPrimi(n, x);
}
return fattori;
}
public static String reverse(String text) {
if (text.length() <= 1) {
return text;
}
return reverse(text.substring(1)) + text.charAt(0);
//return reverse(text.substring(1)) + text.charAt(0);
//return reverse(text, text.length() - 1);
char[] b = text.toCharArray();
reverse(b, 0);
return String.valueOf(b);
}
public static String reverse(String text, int index) {
if(index == 0) return String.valueOf(text.charAt(index));
return text.charAt(index) + reverse(text, index-1);
}
public static void reverse(char[] x, int pos) {
int l = x.length;
if(pos < l/2) {
char tmp = x[pos];
x[pos] = x[l - 1 - pos];
x[l - 1 - pos] = tmp;
reverse(x, pos + 1);
}
}
public static void main(String[] args) {
int numero = 4;
ArrayList<Integer> fattoriPrimi = scomposizioneFattoriPrimi(numero);
@ -41,7 +63,7 @@ public class Ricorsione2 {
for (int fattore : fattoriPrimi) {
System.out.println(fattore);
}
System.out.println("----------------------");
String input = "Hello!";