Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示50!在爪哇_Java_Arrays_Factorial - Fatal编程技术网

Java 显示50!在爪哇

Java 显示50!在爪哇,java,arrays,factorial,Java,Arrays,Factorial,我被指派根据下面的代码编写一个可以显示50个阶乘的程序。由于原语类型不能容纳如此大的数量,我被要求使用整数数组,并使用单个插槽来存储大数量的“部分”。这是我得到的代码,可以用来编码 class Fifty { public static void main(String[] args) { System.out.println("0! = " + fact(0)); System.out.println("1! = " + fact(1));

我被指派根据下面的代码编写一个可以显示50个阶乘的程序。由于原语类型不能容纳如此大的数量,我被要求使用整数数组,并使用单个插槽来存储大数量的“部分”。这是我得到的代码,可以用来编码

class Fifty
{
    public static void main(String[] args)
    {
        System.out.println("0! = " + fact(0));
        System.out.println("1! = " + fact(1));
        System.out.println("5! = " + fact(5));
        System.out.println("50!= " + fact(50));
    }
    public static int fact(int n)
    {
        int product = 1;
        for (int i = 2; i <= n; i++)
        {
        product = product * i;
        }
        return product;
    }
}
50级
{
公共静态void main(字符串[]args)
{
System.out.println(“0!=”+事实(0));
System.out.println(“1!=”+事实(1));
System.out.println(“5!=”+事实(5));
System.out.println(“50!=”+事实(50));
}
公共静态整数事实(整数n)
{
int乘积=1;

对于(int i=2;i不将值存储在数组中,您可以更好地使用正确的数据类型。因此,不使用
int
您可以使用
biginger
而不是将值存储在数组中,您可以更好地使用正确的数据类型。因此,不使用
int
您可以使用
biginger
通过将其分解为一些组件,使其更易于实现

您将需要一种方法将整数转换为其数字数组表示形式,因此请使用单元测试实现该方法:

public static int[] intToDigitArray(int input) {
  //e.g. 50 becomes [5,0]  (or [0,5] if you prefer)
}
您需要一种可以将两个数字表示数组相乘的方法:

public static int[] multiply(int[] a, int[] b) {
  //e.g. multiply([1,2] , [1,1]) becomes [1,3,2]
}
如果必须使用正确的数组,而不是例如数组列表,则还需要考虑要在乘法中分配的结果数组的大小。因此,需要一种方法,例如:

public static int[] allocateArray(int[] a, int[] b) {
  //If I have two arrays of size x and y, whats the max size I need for the output array?
  //initialise with zeros?
}

如果您开始实现这些功能,边做边测试,遇到问题时带着特定的问题回来,您可能会得到更多有用的答案。我没有给出上述任何实现,因为这是一个家庭作业问题,我假设您不希望得到完整的解决方案。

您可以通过br使这一点更容易实现把它分解成一些组成部分

您将需要一种方法将整数转换为其数字数组表示形式,因此请使用单元测试实现该方法:

public static int[] intToDigitArray(int input) {
  //e.g. 50 becomes [5,0]  (or [0,5] if you prefer)
}
您需要一种可以将两个数字表示数组相乘的方法:

public static int[] multiply(int[] a, int[] b) {
  //e.g. multiply([1,2] , [1,1]) becomes [1,3,2]
}
如果必须使用正确的数组,而不是例如数组列表,则还需要考虑要在乘法中分配的结果数组的大小。因此,需要一种方法,例如:

public static int[] allocateArray(int[] a, int[] b) {
  //If I have two arrays of size x and y, whats the max size I need for the output array?
  //initialise with zeros?
}

如果你开始实现这些功能,边做边测试,遇到问题时带着具体的问题回来,你可能会得到更多有用的答案。我没有给出上面的任何实现,因为这是一个家庭作业问题,我假设你不希望得到完整的解决方案。

好吧,这是一个家庭作业问题。我相信使用数组是一个约束。这是我应该做的,但我被要求使用数组,这是一个家庭作业问题。我相信使用数组是一个约束。这是我应该做的,但我被要求使用数组。你可以使用
new int[size]创建数组
。这会给你一个全零的数组。你应该从一个表示
1
的数组开始,然后有一个实现乘法的方法。你知道如何在上面的方法中取一个全零的数组,并让它表示数字
1
?我可以,但在程序本身的什么地方应该在
事实
方法中完成了吗?在看到
产品
的任何地方,都应该用数组替换它。在
产品
上看到运算符的地方,它们需要用方法替换。在看到
int
返回的地方,应该用
int[]替换
,当你看到一个整数被打印出来时,你应该有一个正确打印数组的方法。--我想这就是你要找的类型,它是用C语言编写的,但是这个概念可以延续。希望这有帮助!你可以使用
新的int[size]创建一个数组
。这会给你一个全零的数组。你应该从一个表示
1
的数组开始,然后有一个实现乘法的方法。你知道如何在上面的方法中取一个全零的数组,并让它表示数字
1
?我可以,但在程序本身的什么地方应该在
事实
方法中完成了吗?在看到
产品
的任何地方,都应该用数组替换它。在
产品
上看到运算符的地方,它们需要用方法替换。在看到
int
返回的地方,应该用
int[]替换
,当您看到打印的是整数时,您应该有一个正确打印数组的方法。--我认为这是您正在寻找的类型,它是用C编写的,但是这个概念可以延续。希望这对您有所帮助!