- 22,948
- 11,581
- CPU
- 1-Neurone
- Dissipatore
- Ventaglio
- RAM
- Scarsa
- Net
- Segnali di fumo
- OS
- Windows 10000 BUG
Strano, a parte il fatto che quando dai l'input devi usare il punto (non la virgola), cioè se x=2,5 tu devi inserire 2.5;
vedo che fai degli "include" spesso inutili, ma non dovrebbe essere un problema.
Concentrati sulla ricorsione: FUORI dalla funzione che calcola la potenza (se base=0.0 ed esponente=0 allora NON richiamare la funzione).
Nella funzione invece ti basta controllare i casi base (base=0.0 ritorna subito 0.0, esponente 0 ritorna subito 1.0) altrimenti fai la chiamata ricorsiva. Dentro la funzione ritorna dei double quindi NON ritornare 0 oppure 1, ritorna 0.0 e 1.0
Il codice che hai scritto mi sembra corretto, non capisco perché non ti funzioni. Ti allego il codice che ho scritto io e funziona (nota che l'ELSE prima della chiamata ricorsiva non è necessario, ma se ce lo metti fa lo stesso). Ho omesso il controllo di 0^0 (forma indeterminata).
vedo che fai degli "include" spesso inutili, ma non dovrebbe essere un problema.
Concentrati sulla ricorsione: FUORI dalla funzione che calcola la potenza (se base=0.0 ed esponente=0 allora NON richiamare la funzione).
Nella funzione invece ti basta controllare i casi base (base=0.0 ritorna subito 0.0, esponente 0 ritorna subito 1.0) altrimenti fai la chiamata ricorsiva. Dentro la funzione ritorna dei double quindi NON ritornare 0 oppure 1, ritorna 0.0 e 1.0
Il codice che hai scritto mi sembra corretto, non capisco perché non ti funzioni. Ti allego il codice che ho scritto io e funziona (nota che l'ELSE prima della chiamata ricorsiva non è necessario, ma se ce lo metti fa lo stesso). Ho omesso il controllo di 0^0 (forma indeterminata).
C++:
#include <iostream>
using namespace std;
double potRic(double b, int k){
// per la base 0 sarebbe meglio il test if(b>-0.000000000001 && b<000000000001)
if(b==0.0) return 0.0; // se la base è 0 il risultato è 0
if(k==0) return 1.0; // se l'esponente è 0 il risultato è 1
return b*potRic(b,k-1);
}
int main() {
char tasto = '1';
double b;
int k; // esponente
cout << "\n----- INIZIO -----\n";
do {
cout << "\nInserisci la base --> ";
cin >> b;
cout << "\nInserisci l'esponente (intero) --> ";
cin >> k;
double ris = potRic(b, k);
cout << "\n" << b << "^" << k << " = " << ris << endl;
cout << "\nAncora? (1=SI, altro tasto=NO) --> ";
cin >> tasto;
} while(tasto != '0');
cout << "\n------ FINE ------\n";
return 0;
}
Ultima modifica: