Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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 从循环到嵌套循环?_Java - Fatal编程技术网

Java 从循环到嵌套循环?

Java 从循环到嵌套循环?,java,Java,我有一个程序,它返回N的阶乘。例如,当输入4时,它将给出1,2.3! 如何将其转换为使用嵌套循环 public class OneForLoop { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter a number : "); int N = input.n

我有一个程序,它返回N的阶乘。例如,当输入4时,它将给出1,2.3!

如何将其转换为使用嵌套循环

public class OneForLoop
{   
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);     
        System.out.print("Enter a number : ");
        int N = input.nextInt();                
        int factorial = 1;   

        for(int i = 1; i < N; i++)
        {
             factorial *= i;         
             System.out.println(i + "! = " + factorial); 
        }         
    }
}
公共类OneForLoop
{   
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入一个数字:”);
int N=input.nextInt();
整数阶乘=1;
对于(int i=1;i<>代码>而不是仅仅以线性的方式计算所有的东西,你可以考虑一个内部循环,它会像你在外循环中所做的那样。这就是您试图实现的目标吗?

如果作为嵌套循环编写,它将如下所示:

for (int i = 1; i < N; ++i)
{
    int factorial = 1;
    for (int j = 1; j <= i; ++j) {
         factorial *= j;
    }
    System.out.println(i + "! = " + factorial); 
}
这个程序的结果和你的一样,只是需要更长的时间。你已经拥有的一切都很好。还要注意,阶乘函数增长非常快,因此
int
太小,即使是中等大小的N也无法保存结果


如果您想包括
10在结果中,您需要更改<代码> i < n>代码>的条件:<代码> i> p>您会考虑递归嵌套循环吗?< /p>
public long factorial(int n)
{
    if (n <= 1)
        return 1;
    else
        return n * factorial(n - 1);
}

public static void main(String [] args)
{
    //print factorials of numbers 1 to 10
    for(int i = 1; i <= 10; i++)
        System.out.println(factorial(i));
}
公共长阶乘(int n)
{

如果(n现在你正在递增地计算你的阶乘。每次只需从头开始重新计算。请注意,你现在拥有的比我发布的要好,但这确实符合你的要求

public class TwoForLoops
{   
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);     
        System.out.print("Enter a number : ");
        int N = input.nextInt();                
        int factorial = 1;   

        for (int i = 1; i < N; ++i)
        {
            factorial = 1;
            for(int j = 1; j <= i; j++)
            {
                 factorial *= j;         
            }
            System.out.println(i + "! = " + factorial);         
        } 
    }
}
公共类TwoForLoops
{   
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
System.out.print(“输入一个数字:”);
int N=input.nextInt();
整数阶乘=1;
对于(int i=1;ifor(int j=1;j为什么需要嵌套循环?您希望它们有什么用途?
for(int j=1;j<2;j++)for(int i=1;i
?我不认为需要嵌套循环来合理地计算阶乘。它要求同时执行一个循环和一个嵌套循环,但您希望您的代码执行什么操作?输出相同,但使用嵌套循环不会给出相同的结果尝试将N设为10,并查看差异。请立即修复。只需测试它,更新版本为w对于N=10,Works与您的完全相同。请确保它仍然会给我不同的输出。我仔细检查了它,它仍然会给出正确的结果。如果我们等待,其他用户可能会检查代码并在此处发布它是否正确。在等待时,您可以检查代码,看看您自己是否能找到错误。@WM:“确保它?”这是你的家庭作业,你应该确保它。马克·拜尔斯很乐意提供帮助。@WM:你从来没有说过它需要一个for循环。你只是说了“嵌套循环”。递归当然是嵌套的。因为没有显式循环,所以这不算吗?你在吹毛求疵:).递归不是编程语言中通常所说的循环,在家庭作业环境中显然也不一样。试着将N设置为10,然后在那里尝试…它们是不同的嗯,真的吗?因为我在我的机器上得到相同的结果。也许你发错了代码。
public class TwoForLoops
{   
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);     
        System.out.print("Enter a number : ");
        int N = input.nextInt();                
        int factorial = 1;   

        for (int i = 1; i < N; ++i)
        {
            factorial = 1;
            for(int j = 1; j <= i; j++)
            {
                 factorial *= j;         
            }
            System.out.println(i + "! = " + factorial);         
        } 
    }
}