利用对象作为参数,得到阶乘的值
以下是老师给的提示,但我觉得将Fact方法的参数个数增加为两个好奇怪,一个不行吗
class Fact{
float fact (int n) //定义计算n!的方法
{
int i;
float x =1;
for(i=1;i<n;i++){
x=x*i;}
return x;
}
}
public class Check1{
public static void main (String args[ ])
{
Fact x =new Fact( );
System.out.println(x.fact(10)); //计算10!
System.out.println(x.fact(15)); //计算15!
}
}
将上面Fact方法的参数个数增加为两个,其中一个参数的类型设为类类型;方法的返回值类型改为void。
------解决方案--------------------是啊,为什么是两个?
------解决方案--------------------看错了,这次我纱布了
返回void的话,需要传入一个对象,将结果保存在传入对象的成员中
------解决方案--------------------返回void的话,需要传入一个对象
------解决方案--------------------
class Fact{
void fact (int n, long[] result) //定义计算n!的方法
{
if (result == null)
return;
int i;
long x =1;
for(i=1;i<n;i++){
x=x*i;}
long[0]=x;
}
}
public class Check1{
public static void main (String args[ ])
{
Fact x =new Fact( );
long[] r10 = {0};
long[] r15 = {0};
x.fact(10, r10);
x.fact(15, r15);
System.out.println(r10[0]); //计算10!
System.out.println(r15[0]); //计算15!
}
}
其实我认为直接返回更好,你老师的意思估计是弄个传出参数,不过我感觉根本是多此一举。你原来代码的最大问题是保存阶乘的结果为啥用float,用long不是更好?