首页 > 解决方案 > 我该如何解决这个问题?我认为这与return语句有关

问题描述

import java.util.Scanner;
public class theatre_square
{
    public static void main(String args[])
    {
        Scanner in = new Scanner(System.in);
        long m = in.nextLong(), n = in.nextLong(), s = in.nextLong();
        theatre_square ob = new theatre_square();
        long x = ob.cal(m,s), y = ob.cal(n,s);
        System.out.println(x*y);
    }
    long cal(long a, long b)
    {
        if(a<=0)
            return(0);
        else
            return (1+cal(a-b,b));
    }
}

输入:1000000000 1000000000 1

错误:

线程“主”java.lang.StackOverflowError at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square .java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square. java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal (theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) at theatre_square.cal(theatre_square.java:17) )....... 等等。17) 在 theatre_square.cal(theatre_square.java:17)....... 等等。17) 在 theatre_square.cal(theatre_square.java:17)....... 等等。

我认为它必须与递归函数中的 return 语句有关。

标签: java

解决方案


我认为您可以在没有递归和 for 循环的情况下解决问题。

import java.util.Scanner;
public class theatre_square
{
    public static void main(String args[])
    {
        Scanner in = new Scanner(System.in);
        long m = in.nextLong(), n = in.nextLong(), s = in.nextLong();
        theatre_square ob = new theatre_square();
        long x = ob.cal(m,s), y = ob.cal(n,s);
        System.out.println(x*y);
    }
    
    
    long cal(long m, long a)    {
        long count = m / a;
        long rem = m % a;
        if(rem  > 0){
            count++;
        }
        return count;
    }
}

推荐阅读