我如何解决这个问题??我认为这与返回声明有关 import java.util.Scanner; 公共剧场广场 { 公共静态void main(字符串参数[]) { 扫描仪输入=新扫描仪(系统输入); 长m=in.nextLong(),n=in.nextLong(),s=in.nextLong(); 剧院广场ob=新剧院广场(); 长x=ob.cal(m,s),y=ob.cal(n,s); 系统输出打印ln(x*y); } 长cal(长a、长b) { if(a
我认为你可以不用递归和for循环来解决这个问题我如何解决这个问题??我认为这与返回声明有关 import java.util.Scanner; 公共剧场广场 { 公共静态void main(字符串参数[]) { 扫描仪输入=新扫描仪(系统输入); 长m=in.nextLong(),n=in.nextLong(),s=in.nextLong(); 剧院广场ob=新剧院广场(); 长x=ob.cal(m,s),y=ob.cal(n,s); 系统输出打印ln(x*y); } 长cal(长a、长b) { if(a,java,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();
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));
}
}
你正在用
b==1
调用你的mathodcal
。这意味着,你建立了一个10亿(!)的递归堆栈递归方法调用。这对于普通堆栈来说可能太大了。@Seelenvirtuose是对的。您调用了100000000次递归函数。答案是:您必须了解自己在做什么。每次方法调用都会在堆栈上分配内存,直到方法返回为止。嵌套方法调用太多,您就会运行内存不足。所以这里的错误是你认为你的代码应该正常工作。@GhostCat好的。那么我就用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;
}
}