Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: [C] calcolare pow

  1. #1

    [C] calcolare pow

    Tramite ricorsione, senza utilizzare funzioni di libreria, è possibile calcolare l'elevamento a potenza senza richiamare la stessa funzione esponente-volte?

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    int pow(int x, int y)
    {
    for (int i = 0; i < y; i++)
    i*= i;

    return i;
    }
    "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

  3. #3
    a parte che non è ricorsiva, ma come fà a funzionare?

  4. #4
    Tramite ricorsione, senza utilizzare funzioni di libreria, è possibile calcolare l'elevamento a potenza senza richiamare la stessa funzione esponente-volte?
    E quale potrebbe essere la condizione di uscita dalla ricorsione per evitare che la funzione venga richiamata meno di "esponente" volte?
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Non penso sia possibile una cosa del genere... io per il calcolo di una potenza conosco - oltre alla versione iterativa - quella ricorsiva lineare e ricorsiva binaria, ma entrambe non richiamano la funzione meno di esponente-volte.

    Del resto non vedo proprio come possa essere realizzata una cosa del genere...

    devil89 ma è un'idea tua o hai letto questa cosa da qualche parte (testo di esercizio o altro) ?

  6. #6
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Ho scritto una gran cagata scusate.
    "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

  7. #7
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    /*         mypow         */
    
    int mypow(int, int);
    
    int main()
    {   int n = 3, a = 4;
        
        printf("mypow(%d, %d) = %d\n", n, a, mypow(n, a));
        system("pause");
        return 0;
    }
    
    int mypow(int n, int a){
        int c;
        if(a==0)
            return 0;
        else if(a==1)
             return n;
        else
            c=mypow(n, a-1);
        return n*c;
    }
    Il risultato:
    codice:
    mypow(3, 4) = 81
    Premere un tasto per continuare...

    Questa è una funzione ricorsiva per l'elevamento a potenza. Poi non so se è quello che cercavi..
    -Xant
    [White Thoughts - What Happens Inside Us]
    [myxperiments projects and contacts page]

  8. #8
    codice:
    #include <iostream>
    
    using namespace std;
    
    // Non funziona con esponenti negativi
    int power(int b, int e) {
    	if (e < 1) return 1;
    	return b*power(b, e-1);
    }
    
    int main(void) {
    	int base, esponente;
    	
    	cout << "Base: ";
    	cin >> base;
    	cout << "Esponente: ";
    	cin >> esponente;
    	cout << "Risultato: " << power(base, esponente) << endl;
    }
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  9. #9
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Avevo scritto pure io la vostra stessa soluzione, ma la funzione viene comunque chiamata esponente volte.
    "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

  10. #10
    Si ma non ho capito per qual motivo ti serve una funzione che non venga chiamata esponente-volte... così non va bene?
    -Xant
    [White Thoughts - What Happens Inside Us]
    [myxperiments projects and contacts page]

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.