日期:2014-05-20  浏览次数:20570 次

利用对象作为参数,得到阶乘的值
以下是老师给的提示,但我觉得将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不是更好?