以下程序产生了什么输出? 答案是7,但我无法解决问题。
public class practice {
public static void main(String[] args){
int i = 5;
int b = g(i);
System.out.println(b+i);
}
public static int f(int i) {
int n = 0;
while (n * n <= i) {n++;}
return n-1;
}
public static int g(int a) {
int b = 0;
int j = f(a);
b = b + j;
return b;
}
}
答案 0 :(得分:2)
我认为主要被召唤。以下是发生的步骤列表
g
为参数调用5
。g
中,使用f
参数调用g
,5
f
n
中设置为零,调用while循环,每次n*n
小于或等于其参数(即5)时,n递增。下面概述了while循环。
n
从0增加到1并继续。n
从1增加到2并继续。n
从2增加到3并继续。n-1
,即3-1 = 2,会在函数j
的变量g
中返回到调用它的位置。b
被分配到b+j
0+2
。b
返回到函数b
中的变量main
。b+i
,5+2
, 7 ,会打印出来作为答案。答案 1 :(得分:0)
你使用数字(5)并且基本上检查第一个整数的平方是多少等于5.然后你从答案中取消1并加上5.
所以这是数学:
<强> 1。找到大于5的第一个整数平方
<强> 2。从3开始取消1(平方时的第一个整数,大于
<强> 3。使用最终值2添加5
答案是7。
此代码中有一些非常不必要的内容,例如两个额外的方法。