Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726

    [C] Radice digitale e ricorsività

    Ciao a tutti,

    sto cercando di capire come mai il programmino che sto scrivendo per calcolare la radice digitale con una funzione ricorsiva non funga correttamente.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int somma(int);
    
    int main() {
     int a;
     scanf("%i",&a);
     printf("%i\n",somma(a)); 
     return 0;
    }
    
    int somma(int n) {
    
     if (n < 10)
      return n;
     else
      n = (n%10 + somma(n/10));
     
    
     return n; 
    }
    Mi date una mano??

    Grazie

  2. #2
    Prova con:

    Codice PHP:
    /*
    * Compiled and tested with:
    * i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)

    * input: 65536
    * output: 7
    *
    */

    #include <stdio.h>
    #include <stdlib.h>

    int somma(int);

    int main() {
        
    int a;
        
    scanf("%i",&a);
        
    printf("%i\n",somma(a)); 
        return 
    0;
    }

    int somma(int n) {    
        if (
    10)
            return 
    n;
        else
            
    somma (n%10 somma(n/10));
        return 
    n


  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Funziona, ma potresti dirmi in cosa sbaglio??

    Per me la ricorsione è nuova, quindi faccio un po' fatica a capire bene come muovermi.

  4. #4
    non si vede?
    Ho cambiato la tua
    Codice PHP:
            n = (n%10 somma(n/10)); 
    con
    Codice PHP:
            n somma (n%10 somma(n/10)); 
    ;-)

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    No, si vede bene.

    Solo che ancora non riesco bene capire qual'è stato il tuo ragionamento visto che non conosco affatto le ricorsioni.

  6. #6
    funziona anche così
    Codice PHP:
            n somma (n%10 n/10); 
    ;-)

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Ho provato a fare dei piccoli esercizi con la ricorsione ad esempio facendo una funzione che calcola un numero elevato alla potenza n, e non ho avuto grosse difficoltà, ma con questo tuo esempio francamente non capisco.

    Non riesco a immaginarmelo in testa, potresti spiegarmi come hai ragionato?


    Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    La radice digitale l'ho capita, adesso sto facendo un esercizio con i numeri di fibonacci, ma anche qua ho problemi.

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    726
    Ma voi come avete fatto a capire questa ricorsività?? Devo dire che sto incontrando parecchi problemi.

  10. #10
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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 © 2025 vBulletin Solutions, Inc. All rights reserved.