Sei sulla pagina 1di 2

Funzioni ricorsive e iterative

public class CollezioneStatic {


Fattoriale public static double fattoriale(int n) {
if (n < 0) {
n! = 1 ⋅ 2 ⋅ 3 ⋅ 4 ⋅ ……………… ⋅ (n - 2) ⋅ (n - 1) ⋅ n System.err.println("non definito per n < 0");
return Double.NaN;
}
else {
0! = 1 return fattIter(n); //oppure return fattRico(n);
}
Posto , si ottiene }
private static double fattIter(int n) {
double f = 1;
for (int i = 1; i <= n; i++) {
f *= i;
}
( ) return f;
}
private static double fattRico(int n) {
quindi if (n == 0)
return 1;
else
return n * fattRico(n - 1);
}
public static double potenza(double x, int n) {
Potenza if (x == 0) {
if (n == 0) {
System.err.println("indeterminato");
return Double.NaN;
}
… ( )
else {
( … )( ) if (n < 0) {
System.err.println("impossibile");
( ) return Double.NaN;
}
else return 0;
( ) }
}
else {
Posto ( ) , si ottiene if (n == 0) return 1;
else {
if (n > 0) {
( ) ( )
return poteIter(x, n);
}
( ) else {
( ) return poteIter(1 / x, -n); // return 1 / poteIter(x,
-n);
}
( ) ( ) }
}
quindi } private static double poteIter(double x, int n) {
double p = 1;
for (int i = 1; i <= n; i++) {
( ) p *= x;
( ) }
return p;
}
private static double poteRico(double x, int n) {
( ) if (n == 0)
return 1;
else
return x * poteRico(x, n - 1);
}
//segue
Funzione di probabilità della v. c. Geometrica
(calcola la probabilità di ottenere una pallina bianca alla x-esima estrazione)

( )

( ) ( … )( )
( ) ( )

Posto //seguito
( ) ( ) , si ottiene
public static double geometrica(int x, double p) {
double q = 1 - p;
( ) if (p > 1 || p < 0) {
System.err.println("p deve essere compreso in [0, 1]");
( ) return Double.NaN;
}
( )
else {
if (x < 1) {
( ) ( ) System.err.println("x deve essere maggiore di 0");
return Double.NaN;
quindi }
else {
if (x == 1) {
( ) return p;
( ) }
else {
return poteIter(q, x - 1) * p; //return poteRico(q, x - 1) * p;
}
Successione di Fibonacci }
}
}
235 …… ( ) ……
public static double fibonacci(int n) {
……
2 }
}

………………………………………………

Potrebbero piacerti anche