有谁知道如何解决这个问题?

时间:2015-04-26 00:00:40

标签: java

以下程序产生了什么输出? 答案是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;
    }


}

2 个答案:

答案 0 :(得分:2)

我认为主要被召唤。以下是发生的步骤列表

    g为参数调用
  1. 5
  2. 然后在函数g中,使用f参数调用g5
  3. 在函数f n中设置为零,调用while循环,每次n*n小于或等于其参数(即5)时,n递增。下面概述了while循环。
    1. 0 * 0小于5,将n从0增加到1并继续。
    2. 1 * 1小于5,将n从1增加到2并继续。
    3. 2 * 2小于5,将n从2增加到3并继续。
    4. 3 * 3 小于5,退出循环。
  4. n-1,即3-1 = 2,会在函数j的变量g中返回到调用它的位置。
  5. b被分配到b+j 0+2
  6. b返回到函数b中的变量main
  7. b+i5+2 7 ,会打印出来作为答案。

答案 1 :(得分:0)

你使用数字(5)并且基本上检查第一个整数的平方是多少等于5.然后你从答案中取消1并加上5.

所以这是数学:

<强> 1。找到大于5的第一个整数平方

  • 0 * 0 = 0 // + 1
  • 1 * 1 = 1 // + 1
  • 2 * 2 = 4 // + 1
  • 3 * 3 = 9 // 3 * 3是超过5的第一个值;循环中断

<强> 2。从3开始取消1(平方时的第一个整数,大于

  • 3 - 1 = 2; //使用3,否定1(也可以使用n - )

<强> 3。使用最终值2添加5

  • 2 + 5 = 7 //使用2加5

答案是7。

此代码中有一些非常不必要的内容,例如两个额外的方法。