再帰計算とχ2乗分布
import java.applet.*;
public class Fact extends Applet {
public void init() {
fact(5);
}
int fact(int N) {
int L;
System.out.println("in fact(" + N + ")");
if (N == 0)
return (1);
else {
L = N * fact(N - 1);
System.out.println("return fact;" + L);
return (L);
}
}
}
実行例 int fib(int N) {
int L;
System.out.println("in fib(" + N + ")");
if (N == 1 || N == 2)
return (1);
else {
L = fib(N - 1) + fib(N - 2);
System.out.println("return fib;" + L);
return (L);
}
}
double kai(int f, double x) {
if (f == 1)
return 1.0 / (Math.sqrt(2 * Math.PI * x * Math.exp(x)));
if (f == 2)
return 1.0 / (2 * Math.sqrt(Math.exp(x)));
return (x / (f - 2)) * kai(f - 2, x);
}
}
for (int i = 1; i < 23; i++) {
g.drawLine(ox + i * 20, oy + 180, ox + i * 20, oy + 175);
g.drawString(Integer.toString(i), ox + i * 20 - 5, oy + 195);
}

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class kai2 extends Applet {
int ox = 20, oy = 20;
public void paint(Graphics g) {
int px, py, nx, ny;
for (int f = 1; f <= 9; f = f + 2) {
px = 0;
py = -1;
//関数表示
for (double x = 1.0; x < 23.0; x = x + 0.2) {
nx = (int) (x * 20) + ox;
ny = (int) ((0.3 - kai(f, x)) * 600) + oy;
if (py > 0)
g.drawLine(px, py, nx, ny);
if (Math.abs(x - 1.4) < 0.01)
g.drawString(Integer.toString(f), ox + 30, ny - 5);
px = nx;
py = ny;
}
}
//軸の表示
g.drawLine(ox + 20, oy + 180, 23 * 20 + ox, oy + 180);
g.drawLine(ox + 20, oy + 180, ox + 20, 20);
//x軸目盛り
for (int i = 1; i < 23; i++) {
g.drawLine(ox + i * 20, oy + 180, ox + i * 20, oy + 175);
g.drawString(Integer.toString(i), ox + i * 20 - 5, oy + 195);
}
for (double y = 0.0; y <= 0.3; y=y+0.05) {
int fy=(int)((0.3-y)*600);
g.drawLine(ox + 20, oy + fy, ox + 15, oy + fy);
String st="";
if(Double.toString(y).length()>4) st=Double.toString(y).substring(0,4);
else st=st=Double.toString(y);
g.drawString(st, ox - 10, oy + fy);
}
g.drawString("χ2分布",100,50);
}
// 関数の計算
double kai(int f, double x) {
if (f == 1)
return 1.0 / (Math.sqrt(2 * Math.PI * x * Math.exp(x)));
if (f == 2)
return 1.0 / (2 * Math.sqrt(Math.exp(x)));
return (x / (f - 2)) * kai(f - 2, x);
}
}