Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [C] Esponenziale in modo ricorsivo

    #include <stdio.h>

    int espo(int, int);

    main()
    {
    int base, exp;
    printf("Inserisci la base:");
    scanf("%d", &base);
    printf("Inserisci l'esponente:");
    scanf("%d", &exp);

    printf("%d\n", espo(base, exp));
    }

    espo(int base, int exp)
    {
    if(exp == 1)
    return base;

    else {
    return(espo(base*base, exp-1));
    }
    }

    cosa c'è di concenttualmente sbagliato??
    vi mostro un output
    bash-2.05b$ ./ex1
    Inserisci la base:2
    Inserisci l'esponente:3
    16

    il risultato dovrebbe essere 8
    live free or die

  2. #2
    non basterebbe così?

    codice:
    return(espo(base, exp-1));

  3. #3
    Io non me ne intendo molto di funzioni ricorsive...
    ma lasciando solo
    return(espo(base, exp-1));

    non si ha piu' la condizione di uscita e la funzione andrebbe in loop infinito
    ..Penso
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  4. #4
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Forse così funziona:

    codice:
    espo(int base, int exp) 
    { 
        if(exp == 0) 
            return 1; 
        else
            return base * espo(base, exp-1); 
    }

  5. #5
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    int Esp(int base,int esp);
    int main()
    {
    int base,esp;
    printf("base esponente:"); 
    scanf("%d%d",&base,&esp);
    printf("Risultato:%d\n",Esp(base,esp));
          system("PAUSE");
          return 0;
    }
    int Esp(int base,int esp)
            {
            if(esp==1)
               return base;
            else
               return(base*Esp(base,esp-1));
            }

  6. #6
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Credo che quello di iguana sia più corretto, infatti funziona anche se dico di calcolare un esponenziale con esponente nullo.
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  7. #7
    Vero funziona meglio,la prossima volta
    ci mettero' di piu' di 1 minuto a scrivere il codice
    ma sai il tempo e' tiranno
    Ciao

  8. #8
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Ovvio, il mio non era assolutamente una polemica lo dicevo solo per chiarezza, così chi in seguito leggerà il post (ma anche lo stesso Kandalf) capirà subito quale è il metodo migliore (anche se è alle prime armi).
    Ammiro chi riesce a buttare lì subito qualche riga di codice, sinceramente io non ci sono mai riuscito, preferisco dare qualche idea o un algoritmo, ma codice scritto sul momento mai. Sono sicuro che scriverei castronerie immense
    Ciao
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  9. #9
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Io ci ho messo meno di 1 min.

    Ecco una versione un po' migliore:
    codice:
    double r_pow(double base, int exp) 
    { 
        if(exp < 0)
            return 1.0 / r_pow(base, exp);
        else if(exp == 0) 
            return 1; 
        else
            return base * r_pow(base, exp - 1); 
    }
    Naturalmente per avere le prestazioni migliori si usa un metodo iterativo!


  10. #10
    Che dire Iguana?Sei veloce a scrivere codice
    io meno
    Bonsai
    Per xadom: e mica c'è da arrabbiarsi per 1 codice scritto
    sono altre le cose importanti della vita,dare
    troppa importanza al lavoro nn è da persone
    intelligenti
    Ciau Ciau

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.