Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-01-2008, 18:50   #1
ghiltanas
Senior Member
 
L'Avatar di ghiltanas
 
Iscritto dal: Sep 2006
Messaggi: 27861
[Java] Probl con esercizio con ricorsione

Ciao a tutti, premetto che nn sono affatto esperto, però java mi interessa e nn mi riesce un esercizio, basato appunto sulla ricorsione, con cui ho qualche difficoltà. L' esercizio chiede di vedere se la parola data è palindroma mediante un metodo ricorsivo con intestazione nn modificabile:
"
public class Es60 {
public static boolean palindroma(char [] arr){
int from = 0;
int to = arr.length-1;
if (arr.length<=1)
return true;
else if (arr[from]==arr[to] && from<to){
from ++;
to ++;
return palindroma(arr);
} else
return false;

}}"

io avevo in mente una cosa del genere ma mi genera errore durante l'esecuzione del main (che è già dato) sulla riga dell'else if, e precisamente mi da errore quando va ad analizzare un array con + di un elemento. Poteti darmi qualche aiuto, e magari indicarmi dove trovare qualche spiegazione sulla ricorsione?perchè nn la digerisco molto
__________________
CPU: Ryzen 5700x COOLER: Noctua NH-D15S MOBO: Gigabyte b550 Professional RAM: 4x8 @3600 GPU: XfX Qick319 Rx6700XT HD1: Sk Hynix Platinum p41 2TB HD2: Sabrent Rocket 1TB MONITOR: Xaomi Mi Curved 34"
ghiltanas è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2008, 21:33   #2
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Quote:
Originariamente inviato da ghiltanas Guarda i messaggi
Ciao a tutti, premetto che nn sono affatto esperto, però java mi interessa e nn mi riesce un esercizio, basato appunto sulla ricorsione, con cui ho qualche difficoltà. L' esercizio chiede di vedere se la parola data è palindroma mediante un metodo ricorsivo con intestazione nn modificabile:
"
public class Es60 {
public static boolean palindroma(char [] arr){
int from = 0;
int to = arr.length-1;
if (arr.length<=1)
return true;
else if (arr[from]==arr[to] && from<to){
from ++;
to ++;
return palindroma(arr);
} else
return false;

}}"

io avevo in mente una cosa del genere ma mi genera errore durante l'esecuzione del main (che è già dato) sulla riga dell'else if, e precisamente mi da errore quando va ad analizzare un array con + di un elemento. Poteti darmi qualche aiuto, e magari indicarmi dove trovare qualche spiegazione sulla ricorsione?perchè nn la digerisco molto
Allora, non avendo il tuo metodo main, non saprei dirti di preciso perchè il tuo programma sbagli... però è probabile che l'errore stia nel passaggio ricorsivo stesso: è vero che tu aggiorni gli indici "from" e "to" prima di richiamare il metodo "palindroma" ma... non glieli passi! Quindi, ad ogni chiamata, il programma continua ad analizzare sempre gli stessi caratteri, per cui è verosimile che se gli passi un'array di char con il primo e l'ultimo carattere uguali, lo mandi in loop. Se non puoi cambiare i parametri della funzione, modifica direttamente l'array, passandogliene uno privo dell'inizio e della fine: prova così:

Codice:
palindroma(Arrays.copyOfRange(arr, from, to))
Funziona solo con Java 6: se hai una versione più vecchia, devi costruirti la copia di arr, priva del primo e dell'ultimo elemento, a mano e poi passarla a "palindroma".

Inoltre c'è un errore anche nell'aggiornamento degli indici: il puntatore di "fine array" va decrementato, non incrementato come fai tu (devi scrivere "to--", e non "to++").

Forse queste correzioni dovrebbero bastare.
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN

Ultima modifica di Mixmar : 23-01-2008 alle 21:41. Motivo: Consecutio temporum
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2008, 22:16   #3
ghiltanas
Senior Member
 
L'Avatar di ghiltanas
 
Iscritto dal: Sep 2006
Messaggi: 27861
Quote:
Originariamente inviato da Mixmar Guarda i messaggi
Allora, non avendo il tuo metodo main, non saprei dirti di preciso perchè il tuo programma sbagli... però è probabile che l'errore stia nel passaggio ricorsivo stesso: è vero che tu aggiorni gli indici "from" e "to" prima di richiamare il metodo "palindroma" ma... non glieli passi! Quindi, ad ogni chiamata, il programma continua ad analizzare sempre gli stessi caratteri, per cui è verosimile che se gli passi un'array di char con il primo e l'ultimo carattere uguali, lo mandi in loop. Se non puoi cambiare i parametri della funzione, modifica direttamente l'array, passandogliene uno privo dell'inizio e della fine: prova così:

Codice:
palindroma(Arrays.copyOfRange(arr, from, to))
Funziona solo con Java 6: se hai una versione più vecchia, devi costruirti la copia di arr, priva del primo e dell'ultimo elemento, a mano e poi passarla a "palindroma".

Inoltre c'è un errore anche nell'aggiornamento degli indici: il puntatore di "fine array" va decrementato, non incrementato come fai tu (devi scrivere "to--", e non "to++").

Forse queste correzioni dovrebbero bastare.
il ++ li nn so come c'è finito , cmq nell'esercizio è scritto correttamente --...avevo pensato anch'io al fatto che in realtà nn passassi i parametri aggiornati from e to, infatti andava in loop l'eecuzione..il main ha array di caratteri predefiniti...cmq provo con la copia dell'array, anche se mi tocca farlo manualmente perchè sto usando java 5.0. grazie per l'aiuto
__________________
CPU: Ryzen 5700x COOLER: Noctua NH-D15S MOBO: Gigabyte b550 Professional RAM: 4x8 @3600 GPU: XfX Qick319 Rx6700XT HD1: Sk Hynix Platinum p41 2TB HD2: Sabrent Rocket 1TB MONITOR: Xaomi Mi Curved 34"
ghiltanas è offline   Rispondi citando il messaggio o parte di esso
Old 23-01-2008, 22:51   #4
astorcas
Senior Member
 
L'Avatar di astorcas
 
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
Codice:
public class Es60 {
public static boolean palindroma(char [] arr){
int from = 0;
int to = arr.length-1;
if (arr.length<=1)
return true;
else if (arr[from]==arr[to] && from<to){ 
//from < to a cosa serve? from è sempre minore di to quando si arriva a questo controllo
char[] newArr=new char[arr.lenght-2];
System.arraycopy(arr,1,newArr,0,arr.length-2);
return palindroma(newArr);
} else
return false;

}}"
Senza cambiare firma questo è ciò che mi viene in mente! Poi col sonno che ho....
astorcas è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
NASA: l'equipaggio di Crew-11 rientrer&a...
CoopVoce lancia le sue prime offerte 5G:...
Rivoluzione The Elder Scrolls Online: un...
Lo strapotere cinese è evidente c...
GeForce RTX 6000: niente SUPER e attesa ...
Anche gli Stati Uniti puntano il dito co...
È cinese la prima (enorme) pala e...
A Pechino è record di giorni con ...
Lenovo al CES 2026: Qira, IA ambientale ...
Le sette startup italiane che ridefinisc...
Philips Hue SpatialAware: la configurazi...
Sport & Lifestyle: performance, dati...
Le novità HP al CES 2026 tra AI P...
Gigabyte propone OLED per tutti con lumi...
Musk contro OpenAI, la guerra arriva in ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:36.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v