09/09/2018, 21:08
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int factorial_tail_recursive_inner(int n, int accumulator) {
if (n == 0) {
return accumulator;
} else {
int new_accumulator = n * accumulator;
return factorial_tail_recursive_inner(n - 1, new_accumulator);
}
}
int factorial_tail_recursive(int n) {
int initial_accumulator = 1;
return factorial_tail_recursive_inner(n, initial_accumulator);
}
int factorial_iterative(int n) {
int accumulator = 1; // initial_accumulator
for (int i = 0; i < n; ++i) {
accumulator = n * accumulator; // recursive step
}
return accumulator;
}
11/09/2018, 07:13
private static double sqrtX(double x, double sqX){
//restituisce il valore approssimato della radice di x in funzione di x
//e della sua radice approssimata sqX
x = 1+(x-1)/(1+sqX);
return x;
}
private static double sqrt(double x, int n_cifre){
double Sq=sqrt2(x,0);
if (Sq*Sq==x) return Sq;
else return sqrt2(x,n_cifre);
}
private static double sqrt2(double x,int n_cifre){
//ottiene la lunghezza della radice quadrata di x:
int lngRadInt=Integer.toString((int)x).length();
if (lngRadInt>1) lngRadInt/=2;
double Sq=sqrtX(x,x); //calcola il primo valore approssimato della radice
double apx = Math.pow(10,-n_cifre);
double S=Sq;
Sq=sqrtX(x,Sq); //calcola il secondo valore approssimato della radice
double Q=Sq*Sq; //esegue il quadrato della radice
double diff=Math.abs(Sq-S);
//Ricalcola la radice fino all' approssimazione apx opportuna:
while (Q!=x && diff>apx){
S=Sq;
Sq=sqrtX(x,Sq);
Q=Sq*Sq;
diff=Math.abs(Sq-S);
}
//Tronca il numero alla cifra significativa opportuna:
String str = Double.toString(Sq).substring(0, n_cifre+lngRadInt+1);
Sq = Double.parseDouble(str);
return Sq; //restituisce il valore della radice quadrata di x
}
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.