Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix
Un proiettore economico, che fa della portabilità e immediatezza i suoi punti di forza. Adatto per una camera da letto o per la casa vacanze, è basato su sistema proprietario Linux ma offre piena compatibilità ufficiale a Netflix
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-06-2009, 11:44   #21
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
Guarda che l'avevi già scritto prima il codice corretto per questa parte.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 11:58   #22
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
cionci sai che è stato illuminante il tuo primo post (e anche il ragionamento a "pezzi" che hai fatto successivamente)? Sinceramente la spiegazione mi è sembrata un pochettino confusionaria, ma sicuramente è più chiara di un codice che ho trovato che mi ha fatto mettere le mani nei capelli.
Credevo di averla capita la ricorsione, ma quando ho visto questo codice dopo 4 righe mi sono bloccato, una cosa orrenda. Cosi mi chiedo se l'abbia capita davvero o no la ricorsione.
Se lo ritrovo posto il codice (è in Python).
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 12:23   #23
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
Quote:
Originariamente inviato da ~FullSyst3m~ Guarda i messaggi
Sinceramente la spiegazione mi è sembrata un pochettino confusionaria
Ah sì, questo è poco ma sicuro E' difficile mettere in piedi un discorso di quel tipo senza esempi di codice.

Un esercizio secondo che mette molto meglio in evidenza quello che voglio dire è ad esempio la ricerca dell'ultimo elemento del vettore che è mutiplo di un valore (supponiamo che sia obbligatorio partire a controllare dall'elemento zero e non sia possibile partire dall'ultimo, la cosa sarebbe obbligatoria in una lista singolarmente linkata).
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 12:29   #24
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da cionci Guarda i messaggi
Ah sì, questo è poco ma sicuro E' difficile mettere in piedi un discorso di quel tipo senza esempi di codice.

Un esercizio secondo che mette molto meglio in evidenza quello che voglio dire è ad esempio la ricerca dell'ultimo elemento del vettore che è mutiplo di un valore (supponiamo che sia obbligatorio partire a controllare dall'elemento zero e non sia possibile partire dall'ultimo, la cosa sarebbe obbligatoria in una lista singolarmente linkata).
E' stata una bella "sensazione" però vedere aprirsi altri punti di vista, alla fin fine la ricorsione l'ho studiata scrivendo le varie chiamate su carta e penna e facendomela spiegare al volo da cdimauro quando l'ho incontrata mentre studiavo Python. Però quando ho visto quel codice del quale parlavo prima mi è venuto il dubbio se l'ho capita davvero o meno. O sono io o è il codice. Non ci sono alternative.
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 14:34   #25
Cory
Member
 
L'Avatar di Cory
 
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
così potrebbe andare? purtroppo non mi da il risultato che volevo

Codice:
int ricerca(int a[], int dim, int n, int pos){

    if(pos>dim){
        return -1;
        }
    else{
        if(a[pos]%n==0) return pos;
        else return ricerca(array,SIZE,n,pos++);
        }

    }
nel senso che, giustamente,mi dice che array e SIZE non sono definiti nello scope.
Cory è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 16:02   #26
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
Cory: perché ogni volta torni indietro ?

Parti da qui:
Codice:
if(a[i]%n==0) 
   return i;
if(i==dim-1) 
   return -1;
Ti ho già detto che non ci sono condizioni (if) per la ricorsione, basta solo scrivere la regola di ricorsione.
Nota: che quella sopra può anche andare bene, cambiando qualche nome alle variabili, ma ti sei nuovamente perso fra if ed else.
Sia chiaro che catene di if else possono andare, questa volta il codice è facile, ma non ti permettono di SEPARARE le varie parie parti.

Ultima modifica di cionci : 11-06-2009 alle 16:10.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 16:26   #27
Cory
Member
 
L'Avatar di Cory
 
Iscritto dal: Jan 2009
Città: Trento
Messaggi: 81
scusa, ma tu come lo faresti?? perchè più che quello che ho scritto sopra non saprei che diavolo fare..
Cory è offline   Rispondi citando il messaggio o parte di esso
Old 11-06-2009, 16:53   #28
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
Il tuo codice in fondo va anche bene è la forma in cui l'ha scritto che per una situazione più complessa ti crea sicuramente problemi.
Codice:
int ricerca(int a[], int dim, int n, int pos = 0)
{
   //prima condizione di arresto
   if(pos>=dim)
   {
      return -1;
   }

   //seconda condizione di arresto
   if(a[pos]%n==0)
   {
      return pos;
   } 

   //gestione del passo di ricorsione generico
   return ricerca(a, dim, n, pos+1);   
}
Scomponendo sempre la scrittura in:
- if condizione di arresto con il return immediato
- gestione del passo di ricorsione generico
si ottiene la divisione di cui ti parlavo all'inizio e non ti incasinerai mai più con gli if else delle condizioni di arresto.

Anche se questo caso è semplice, per generalizzare, per la gestione del passo di ricorsione generico tu sai che puoi avere in mano:
- valore dei parametri attuali della funzione
- valori ritornati delle ricorsioni

Ad esempio: trovare l'ultimo elemento del vettore dispari (nota: bisogna obbligatoriamente eseguire la ricorsione dal primo elemento):

(0) Condizione di arresto: sono arrivato in fondo al vettore

(N) Condizione di ricorsione generica:
(N.1) - valore ritornato dalla ricorsione: posso avere in mano l'indice dell'elemento successivo al corrente che è dispari
(N.2) - parametri attuali della funzione: posso conoscere se l'elemento attuale è dispari

Il codice viene da solo:

Codice:
int ricerca(int *a, int dim, int i = 0)
{
   //(0)
   if(i >= dim)
     return -1;

   //(N)
   int res1 = ricerca(a, dim, i + 1); //(N.1)
   
   int res2 = -1; 
   if(a[i] % 2) //(N.2)
      res2 = i;

   //se un elemento successivo è dispari il valore è diverso da -1
   if(res1 > 0) 
     return res1;

   //altrimenti ritorno res2;
   return res2;
}
Questo in prima analisi, dopo si può renderlo più compatto:
Codice:
int ricerca(int *a, int dim, int i = 0)
{
   if(i >= dim)
     return -1;

   int res1 = ricerca(a, dim, i + 1); //(N.1)
   if(res1 > 0) 
     return res1;
  
   if(a[i] % 2) 
      return i;

   return -1;
}
O ancora più compatto:
Codice:
int ricerca(int *a, int dim, int i = 0)
{
   if(i >= dim)
     return -1;

   int res1 = ricerca(a, dim, i + 1);
   return (res1 > 0 || ! a[i] % i) ? res1 : i;
}
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR CHOICE Projector Air Pro: piccolo, portatile e con Netflix HONOR CHOICE Projector Air Pro: piccolo, portati...
ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Rocket Factory Augsburg ha riscontrato u...
Blue Origin sta ricostruendo e modifican...
BMW taglierà 8.000 posti di lavor...
7.600 annunci di nudify app su Meta, tut...
Visa ne lascia a casa 2600: intelligenza...
Batterie sostituibili? Per Logitech, gli...
IBM: l'IA riduce i costi delle violazion...
Logitech G Cloud bocciata dal pubblico, ...
NVIDIA RTX Spark, provato un prototipo c...
Sony e Fujifilm: evacuate le fabbriche d...
Starship: Ship 40 continua a galleggiare...
UMC investe su Singapore e Tainan per ri...
Steam Machine, novità sulle code:...
Anche Foxconn abbandona VMware e sceglie...
Windows 11 migliora l'accessibilit&agrav...
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: 23:40.


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