Tramite ricorsione, senza utilizzare funzioni di libreria, è possibile calcolare l'elevamento a potenza senza richiamare la stessa funzione esponente-volte?
Tramite ricorsione, senza utilizzare funzioni di libreria, è possibile calcolare l'elevamento a potenza senza richiamare la stessa funzione esponente-volte?
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
a parte che non è ricorsiva, ma come fà a funzionare?
E quale potrebbe essere la condizione di uscita dalla ricorsione per evitare che la funzione venga richiamata meno di "esponente" volte?Tramite ricorsione, senza utilizzare funzioni di libreria, è possibile calcolare l'elevamento a potenza senza richiamare la stessa funzione esponente-volte?
"Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."
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) ?
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
Il risultato: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; }
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..
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."
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
Si ma non ho capito per qual motivo ti serve una funzione che non venga chiamata esponente-volte... così non va bene?