1、编写程序计算n = 1、2、4、8、16、32时,以下函数的值:
1、logn、n、nlogn、n2、n3、2n、n!
用excel做表,保存为PDF。提交"漂亮的"表格(log以2为底)
2、请给出++x的执行次数与n函数关系(严格,不用O)
static int fun(int n) {
int x = 1;
for(int i = 0; i < n; i++)
for(int j = 0; j < i; ++j)
for(int k = 0; k < j; ++k)
++x;
return x;
}
public class Text_02 {
private final double[] n={1,2,4,8,16,32};
public double[] logn(){
double []newn = new double[n.length];
for (int i = 0; i < n.length; i++)
newn[i] =Math.log(n[i])/Math.log(2);
return newn;
}
static int fun(int n){
int x = 1;
for(int i = 0 ; i < n;i++)
for (int j = 0; j < i; j++)
for (int k = 0; k < j; k++)
++x;
return x;
}
public double[] nlogn(){
double [] newn = logn();
for (int i = 0; i < n.length; i++)
newn[i] *= n[i];
return newn;
}
public double[] c(){return getDoubles(0);}
public double[] dn(){return getDoubles(2);}
public double[] tn(){return getDoubles(3);}
public double[] index2(){
double[] newn = new double[n.length];
for (int i = 0; i <n.length;i++)
newn[i] =Math.pow(2,n[i]);
return newn;
}
public double[] factorial(){
double[] newn = new double[n.length];
for (int i = 0; i < n.length; i++)
newn[i] = recursion(n[i]);
return newn;
}
public double recursion(double num){
if (num == 1)
return 1;
else
return num*recursion(num-1);
}
private double[] getDoubles(int x) {
double[] newn = new double[n.length];
for (int i = 0; i < n.length; i++)
newn[i] = Math.pow(n[i], x);
return newn;
}
private static void print(double[] doubles) {
for (double x : doubles)
System.out.print(x + " ");
System.out.println("\n");
}
}
1/2*( n(n+1)(2n+1)/6 - 1^2 - 2^2 + (-3n^2 + n + 10)/2)
=1/2( 1/6*( 2n^3 + 3n^2 + n - 30 + 3(-3n^2 + n + 10) ) )
=1/2*( 1/6*( 2n^3 - 6n^2 + 4n )
=1/6*( n^3 - 3n^2 + 2n )
=n(n-1)(n-2)/6