java - 我该如何解决这个问题?我认为这与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 语句有关。
解决方案
我认为您可以在没有递归和 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;
}
}
推荐阅读
- python - ImportError:无法从“sqlalchemy.orm.query”导入名称“_ColumnEntity”
- csv - 使用 go 进行 CSV 转换
- python - 无法使用 Flask 显示 html
- optimization - 使用 Scipy 优化 brentq 错误计算隐含波动率
- keystonejs - 是否可以更改管理 UI 中的默认搜索字段以获取 Keystone 5 中的列表?
- xcode - armv7架构的xcode错误并反应本机项目
- php - 如何创建 php 文件可以在不使用命令 php foo.php 或 ./foo.php 的情况下执行
- html - 在另一个 svg 中添加一个 svg
- reactjs - React - Map & useRef - 功能组件
- mongodb - MongoDB PrivateLink 不工作:连接超时