Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve
Dopo quasi un mese di utilizzo quotidiano e un viaggio medio-lungo in autostrada, raccontiamo pregi e limiti della Geely EX5: comfort premium, batteria LFP da 60,22 kWh, autonomia fino a 430 km e un prezzo che parte da 38.900 €
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-08-2010, 01:52   #21
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da malocchio Guarda i messaggi
Concettualmente un albero è definito induttivamente, quale struttura migliore per esercitarsi nella scrittura di funzioni ricorsive?
non é solo un esercizio di stile, é anche questione di semplicitá del codice.



Quote:
Comunque la vedo ostica trasformare una DFS da ricorsiva a iterativa
molto piu semplice di quanto pensi (vedi post di DanieleC88), anche se comunque piu complicato di un algoritmo ricorsivo.



Quote:
Inoltre, statisticamente parlando penso possiamo dire che la profondità di un albero cresce logaritmicamente rispetto al numero dei nodi...
"statisticamente" non vuol dire niente: l'altezza di un albero é logaritmica nel numero di nodi se l'albero gode di una certa proprietá di bilanciamento come quella degli alberi AVL o quella degli alberi RB.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2010, 08:34   #22
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da fero86 Guarda i messaggi
1) no se il linguaggio é tail-call optimized
2) early optimization is the root of all evil
1) Ok, ma il titolo del thread riporta [JAVA] e, a meno che non mi sia perso per strada qualcosa, questa ottimizzazione in Java non c'è.

2) Su questo sono d'accordo anche io, ma non intendevo sottointendere che è sempre meglio implementare i metodi di tree traversal in modo iterativo che ricorsivo, anche perchè non lo penso.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2010, 12:09   #23
oNaSsIs
Member
 
L'Avatar di oNaSsIs
 
Iscritto dal: Apr 2007
Messaggi: 182
In generale si parla di ricorsione in coda (o tail recursive) quando una funzione f chiama al suo interno una funzione g (la quale può anche essere f stessa, come nel nostro caso) e il valore che restituisce è proprio quello restituito dalla funzione g, senza alcuna ulteriore computazione. Non è necessario quindi utilizzare un nuovo Record di Attivazione per g dato che f non deve mantenere alcun risultato intermedio, di conseguenza viene proprio utilizzato l'RdA di f per g. Quindi lo spazio utilizzato sullo stack è costante.

Ultima modifica di oNaSsIs : 06-08-2010 alle 12:11.
oNaSsIs è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2010, 12:26   #24
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da oNaSsIs Guarda i messaggi
In generale si parla di ricorsione in coda (o tail recursive) quando una funzione f chiama al suo interno una funzione g (la quale può anche essere f stessa, come nel nostro caso) e il valore che restituisce è proprio quello restituito dalla funzione g, senza alcuna ulteriore computazione. Non è necessario quindi utilizzare un nuovo Record di Attivazione per g dato che f non deve mantenere alcun risultato intermedio, di conseguenza viene proprio utilizzato l'RdA di f per g. Quindi lo spazio utilizzato sullo stack è costante.
Grazie delle spiegazioni.
In ogni caso, qui si sta parlando di Java, e bisogna tenere in considerazione le implementazioni esistenti delle specifiche della Java Virtual Machine e del Bytecode.

Una cosa del genere:
Codice:
public class TailCall
{
    private static int tailCallRecursion (int i, int times) {
        if (times <= 0) return i;
        return tailCallRecursion(i, times-1);
    }

    public static void main (String... argv) {
        int result = tailCallRecursion(0, 10000);
        System.out.println(result);
    }
}
se compilata e mandata in esecuzione provoca una java.lang.StackOverflowError.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 06-08-2010 alle 12:29.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2010, 12:31   #25
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
1) Ok, ma il titolo del thread riporta [JAVA] e, a meno che non mi sia perso per strada qualcosa, questa ottimizzazione in Java non c'è.
be', il discorso stava prendendo un respiro piu generale.



Quote:
Originariamente inviato da oNaSsIs Guarda i messaggi
In generale si parla di ricorsione in coda (o tail recursive) quando una funzione f chiama al suo interno una funzione g (la quale può anche essere f stessa, come nel nostro caso) e il valore che restituisce è proprio quello restituito dalla funzione g, senza alcuna ulteriore computazione. Non è necessario quindi utilizzare un nuovo Record di Attivazione per g dato che f non deve mantenere alcun risultato intermedio, di conseguenza viene proprio utilizzato l'RdA di f per g. Quindi lo spazio utilizzato sullo stack è costante.
grazie per le delucidazioni
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 07-08-2010, 01:17   #26
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
Quote:
Originariamente inviato da malocchio Guarda i messaggi
Concettualmente un albero è definito induttivamente, quale struttura migliore per esercitarsi nella scrittura di funzioni ricorsive?
Comunque la vedo ostica trasformare una DFS da ricorsiva a iterativa
Inoltre, statisticamente parlando penso possiamo dire che la profondità di un albero cresce logaritmicamente rispetto al numero dei nodi...
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Basta appoggiarsi alla struttura dati più appropriata: nel caso di una DFS (visita in-order, nel caso degli alberi) basta usare uno stack. Anzi, concettualmente bastano anche un paio di puntatori (però è macchinoso ).
Vedo più problematica la BFS (visita per livelli, nel caso degli alberi), ma anche là non è difficilissimo: basta usare una coda invece di uno stack.
Quote:
Originariamente inviato da fero86 Guarda i messaggi
non é solo un esercizio di stile, é anche questione di semplicitá del codice.
molto piu semplice di quanto pensi (vedi post di DanieleC88), anche se comunque piu complicato di un algoritmo ricorsivo.
"statisticamente" non vuol dire niente: l'altezza di un albero é logaritmica nel numero di nodi se l'albero gode di una certa proprietá di bilanciamento come quella degli alberi AVL o quella degli alberi RB.
Da quello che ho capito l'autore del post si sta esercitando a lavorare su alberi con la ricorsione...

"statisticamente"... ho usato la parola sbagliata!
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
Old 07-08-2010, 10:43   #27
oNaSsIs
Member
 
L'Avatar di oNaSsIs
 
Iscritto dal: Apr 2007
Messaggi: 182
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
In ogni caso, qui si sta parlando di Java, e bisogna tenere in considerazione le implementazioni esistenti delle specifiche della Java Virtual Machine e del Bytecode.
Hai ragione, il codice da te scritto rispetta la definizione ma restituisce un eccezione di tipo stack overflow. Questa cosa incuriosisce anche me, non ho mai usato la ricorsione in coda con Java e mi sembra una grossa pecca la sua mancata implementazione. Cercherò di documentarmi, per ora ho trovato questo.
oNaSsIs è offline   Rispondi citando il messaggio o parte di esso
Old 07-08-2010, 12:30   #28
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da oNaSsIs Guarda i messaggi
Hai ragione, il codice da te scritto rispetta la definizione ma restituisce un eccezione di tipo stack overflow.
la solleva, non la restituisce, ed inoltre é un errore, non un'eccezione.


Quote:
Questa cosa incuriosisce anche me, non ho mai usato la ricorsione in coda con Java e mi sembra una grossa pecca la sua mancata implementazione. Cercherò di documentarmi, per ora ho trovato questo.
piu che una grossa pecca é un trend: solitamente solo i linguaggi funzionali implementano questa ottimizzazione.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 07-08-2010, 12:42   #29
oNaSsIs
Member
 
L'Avatar di oNaSsIs
 
Iscritto dal: Apr 2007
Messaggi: 182
Chiedo venia per il mio linguaggio inappropriato...
oNaSsIs è offline   Rispondi citando il messaggio o parte di esso
Old 07-08-2010, 18:40   #30
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
Quote:
Originariamente inviato da fero86 Guarda i messaggi
la solleva, non la restituisce, ed inoltre é un errore, non un'eccezione.
Come siamo pignoli!
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
Old 08-08-2010, 17:21   #31
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da fero86 Guarda i messaggi
la solleva, non la restituisce, ed inoltre é un errore, non un'eccezione.
.
In Java le eccezioni non si "sollevano" (raise) ma si... lanciano! (throw)

Quote:
Originariamente inviato da malocchio
Come siamo pignoli!
Non "pignoli", ma precisi.
E con questa ho vinto il premio rompicoglioni della domanica
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 08-08-2010, 18:15   #32
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
[...] della domanica
Si dice domenica.
Fregato il premio!
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 08-08-2010, 18:23   #33
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi
Si dice domenica.
Fregato il premio!

...
Ma lol
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 08-08-2010, 20:22   #34
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
D'OH
fero86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Recensione Google Pixel 11: non ha l'HiLight dei Pro, ma è il Pixel più equilibrato di sempre Recensione Google Pixel 11: non ha l'HiLight dei...
Samsung anticipa gli obiettivi delle mem...
iPhone 18 Pro e Pro Max, il prezzo aumen...
Anthropic scava, NVIDIA vende i picconi:...
I 5 brand di Anker si uniscono: un solo ...
Motorola moto g67 a 229,90€ e edge 70 a ...
Scontata di oltre 50€ reali, a 179€ Robo...
Final Fantasy VII Revelation ha una data...
Super venduta perché va benissimo...
Torna a soli 34,19€ grazie a un coupon: ...
Samsung ci riprova? Nel 2027 potrebbe ar...
Questo portatile HP da 469€ in offerta &...
Fujifilm ha annunciato il nuovo super-te...
Il drone NASA Dragonfly atterrerà...
Il telescopio spaziale Hubble ha ripreso...
Face ID di Apple di nuovo in tribunale: ...
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: 19:46.


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