Torna indietro   Hardware Upgrade Forum > Software > Programmazione

TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra abbina per la prima volta un pannello AMOLED alla tecnologia NXTPAPER con finitura opaca, affiancandoci una fotocamera periscopica da 50 MP con zoom ottico 3x, il SoC Dimensity 7400 Elite e una batteria da 5.800 mAh. Nella prova sul campo emergono luminosità di picco molto elevata, comparto fotografico solido per la fascia di prezzo e autonomia nella media, a fronte di velocità di scrittura dello storage piuttosto contenute
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 16-01-2009, 18:26   #1
Merlino86
Senior Member
 
L'Avatar di Merlino86
 
Iscritto dal: Jan 2008
Città: Imperia
Messaggi: 1171
[JAVA] Algoritmo ricorsivo inversione cifre

Salve a tutti sono alle prese con questo semplice algoritmo ma alquanto fastidioso...il mio obiettivo è invertire un numero es.: input 12345 -output 54321... sono riuscito a fare ciò solo trasformando le cifre in stringhe per poi concatenarle...vi posto la mia soluzione:

Codice:
public static int inversioneR(int x)
       {   
    	   
    	   String numero = "";    	    
    	   if(x<10)  return x ;
    	   else 
    		   {    		     
    		     int inverso = x % 10;
    		     numero += inverso;
    		     int newX = x / 10;  
    		     return  Integer.parseInt(numero + inversioneR(newX)); 
    		     
    		   }
Non riesco a trovare invece la soluzione la quale non comporti la trasformazione delle cifre in lettere ...se qualcuno fosse così gentile da perdere qualche minuto per aiutarmi gliene sarei grato...grazie in anticipo
Merlino86 è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2009, 19:30   #2
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Beh ma credo non cambierebbe nulla trasformandole in lettere
Alla fine ti troveresti un array di char invece che una stringa (che è per l'appunto un array di char). Ho forse capito male quello che vuoi fare?
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 16-01-2009, 20:24   #3
Merlino86
Senior Member
 
L'Avatar di Merlino86
 
Iscritto dal: Jan 2008
Città: Imperia
Messaggi: 1171
Quote:
Originariamente inviato da Don[ITA] Guarda i messaggi
Beh ma credo non cambierebbe nulla trasformandole in lettere
Alla fine ti troveresti un array di char invece che una stringa (che è per l'appunto un array di char). Ho forse capito male quello che vuoi fare?
Praticamete io ho già trovato la soluzione per invertire il numero ma questo comporta la trasformazione della cifra in un carattere per poterla concatenare (attraverso l'operatore "+" ) alla prossima cifra sempre trasformata in carattere...invece vorrei riuscire a invertire il numero senza ricorrere alla trasformazione di ogni singola cifra in carattere..mi sono riuscito a spiegare bene questa volta?...
Merlino86 è offline   Rispondi citando il messaggio o parte di esso
Old 17-01-2009, 09:24   #4
wisher
Senior Member
 
L'Avatar di wisher
 
Iscritto dal: Aug 2005
Messaggi: 2755
Puoi aiutarti pensando che quando concateni ad un numero una cifra quello che ottieni è questo:
Codice:
Numero.Cifra -> Numero*10+Cifra
__________________
wisher è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 10:46   #5
Merlino86
Senior Member
 
L'Avatar di Merlino86
 
Iscritto dal: Jan 2008
Città: Imperia
Messaggi: 1171
Quote:
Originariamente inviato da wisher Guarda i messaggi
Puoi aiutarti pensando che quando concateni ad un numero una cifra quello che ottieni è questo:
Codice:
Numero.Cifra -> Numero*10+Cifra
Si infatti questa è la regola base per concatenare le cifre...ma nella ricorsione la quale inizia a stampare dall'ultimo valore preso in esame bisognerebbe trovare una soluzione per isolare la prima cifra del numero e concatenarla alle successive ricorsivamente ....in questo modo otterremmo come prima stampa l'ultima cifra del numero , come seconda la penultima cifra e così via.... credo ke la soluzione sia questa ma nn riesco ancora a isolare la prima cifra del numero....
Merlino86 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 10:53   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non riesci a trovarlo perché pensi a fare la ricorsione solo in fondo...se la fai all'inizio cosa succede ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 12:03   #7
Merlino86
Senior Member
 
L'Avatar di Merlino86
 
Iscritto dal: Jan 2008
Città: Imperia
Messaggi: 1171
Quote:
Originariamente inviato da cionci Guarda i messaggi
Non riesci a trovarlo perché pensi a fare la ricorsione solo in fondo...se la fai all'inizio cosa succede ?
grazie per il suggerimento ma sinceramente ho le idee ancora più confuse.. mi dispiace .... forse ho bisogno di capire ancora meglio la ricorsione....
Merlino86 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2009, 19:28   #8
clockover
Senior Member
 
L'Avatar di clockover
 
Iscritto dal: Oct 2004
Messaggi: 1945
Fatti un disegnino ad alberello di come lavora l'algoritmo!
Si comincia dal caso base (non sempre ovviamente), cioè quando l'algoritmo deve fermarsi! Quando si ferma comincia dall'alto della pila (stack) a far proseguire l'algoritmo che ha richiamato l'ultima volta la ricorsione! In questo modo l'elemento letto all'ultimo, sarà il primo ad essere elaborato!

ti faccio un esempio
Codice:
public static void leggiArr(int a[]){
	leggiArr(a, 0);
}
public static void leggiArr(int a[], int i){
	if(i == a.length)return;
	System.out.print(a[i]+" ");
	leggiArr(a, i + 1);
}
nel secondo metodo dovresti saper riconoscere la ricorsione, e l'elaborazione degli elementi, in questo caso con la stampa a video! Per il tuo metodo devi apportare una piccola variazione!
Ciao
clockover è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 08:46   #9
Merlino86
Senior Member
 
L'Avatar di Merlino86
 
Iscritto dal: Jan 2008
Città: Imperia
Messaggi: 1171
grazie a tutti per esservi interessati al mio problema...."ho trovato" la soluzione....
Merlino86 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 09:11   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Rendici partecipi
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 09:43   #11
Merlino86
Senior Member
 
L'Avatar di Merlino86
 
Iscritto dal: Jan 2008
Città: Imperia
Messaggi: 1171
Quote:
Originariamente inviato da cionci Guarda i messaggi
Rendici partecipi
certo con molto piacere....

allora essenzialmente "l'unica" soluzione è questa:

Passo base: portarsi dietro come parametro esplicito della chiamata ricorsiva una variabile che potesse sommare l'ultima cifra del numero moltiplicata per 10 alla penultima e così via fino alla prima.

quindi il codice sarebbe questo
Codice:
    public static int inversioneR(int numero, int inverso)
	   {
			int resto = numero % 10;
			if(numero > 10)
			{
				int newNumero =  numero / 10;
				inverso = (inverso + resto) * 10;
				return inversioneR(newNumero,inverso);
			}
			else			
				return inverso + resto;
			
		}
Ovviamente la chiamata a questo metodo sarebbe :

inversioneR( numeroDaInvertire , 0 )

Vi ringrazio ancora per i vostri suggerimenti
Merlino86 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 10:14   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Bene.

Però si sarebbe potuto fare anche con un solo parametro sfruttando alcun proprietà matematiche.

PS: sia chiaro, non è più veloce di come l'hai fatto te
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 10:21   #13
Merlino86
Senior Member
 
L'Avatar di Merlino86
 
Iscritto dal: Jan 2008
Città: Imperia
Messaggi: 1171
Quote:
Originariamente inviato da cionci Guarda i messaggi
Bene.

Però si sarebbe potuto fare anche con un solo parametro sfruttando alcun proprietà matematiche.

PS: sia chiaro, non è più veloce di come l'hai fatto te
era quello che volevo ottenere come soluzione ma sinceramente non sono riuscito a trovare la sequenza di calcoli matematici esatta....
Merlino86 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2009, 10:24   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Pensa a logaritmo in base 10 ed elevazione a potenza di 10
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Il MIT lascia 13 copie di Claude Opus 4....
CXMT punta a produrre 600.000 wafer DRAM...
'Windows open source' fa un altro passo ...
XPENG porta Google Play a bordo: app e i...
Bestseller auricolari Amazon: i 5 modell...
Il satellite spia russo Kosmos 2612 si s...
CrowdStrike mette l’IA contro l’IA: un m...
SAP NOW AI Tour, l'impresa autonoma pass...
Amazon Luna arriva su Prime Video: cloud...
HomeView, Apple pensa già al braccio rob...
Foto reale scartata come fake: Truebees ...
Jim Keller accelera su RISC-V e intellig...
Tutte le migliori offerte Amazon di oggi...
La bancarotta di Character.AI diventa un...
SanDisk Extreme da 128 GB a 31,96€ su Am...
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: 07:41.


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