Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760

    C - indirizzi di ritorno funzioni

    Qualcuno mi può indicare dove si trovano gli indirizzi di ritorno di queste 2 funzioni?
    codice:
    int f(int *a, int i, node *lis)
    	{ int x;
    	   if (lis == NULL) return(0);
    	   else if (lis->data > i) 
    {*a=(*a)+1; printf(“%d”,*a); return(f(a,i+1,lis->next));}
    		else if (lis->data <i) 
    			{x=f(a,i,lis->next); *a=(*a)+x; printf(“%d”,*a); return(x);}
    			else return(*a);
    	}
    ---------------------------------
    codice:
    int f(int *a, int i, node *lis)
    	{ int x;
    	   if (lis == NULL) return(0);
    	   else if (lis->data > i) 
    {*a=(*a)+1; printf(“%d”,*a); return(f(a,i+1,lis->next));}
    		else if (lis->data <i) 
    			{x=f(a,i,lis->next); *a=(*a)+x; printf(“%d”,*a); return(x);}
    			else return(*a);
    	}

  2. #2
    In che senso gli indirizzi di ritorno?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760
    nel senso se dovessi simulare questa funzione "a mano" tramite i record d' attivazione dove sono i punti dove vengono ritornati dei valori

  4. #4
    La tua domanda non è assolutamente chiara: simulare a "a mano" tramite i record d'attivazione?
    Non ti basta chiamarla?
    In ogni modo contiene 4 volte l'istruzione return e due chiamate ricorsive. rognosetta ;-)

    EDIT: tra l'altro le due funzioni che hai postato, sono identiche, nel senso vero euclideo.. quindi svrapponibili geometricamente, tra di loro!

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760
    il testo è il seguente :
    "Si simuli l’esecuzione della funzione ricorsiva f, utilizzando i record di attivazione, e supponendo che la funzione venga richiamata con L: ....."
    l' esercizio consiste nel simulare cosa avviene in memoria nel caso di una simulazione di una lista

    ad esempio nella lista
    codice:
    node *copy_rt(node *l, node **acc)
    {
    node *p;
    if (l != NULL)
    {
    p=newnode();
    p->data = l->data;
    p->next = (*acc);
    (*acc)=p;
    return copy_rt(l->next,acc);
    }
    }
    invocata da copy_rt(p,&q); un indirizzo ritorno è qui e l'altro è in return copy_rt(l->next,acc);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.