0
private int[] myStuff;
/** Precondition: myStuff contains int values in no particular order.
  /*/ 
public int mystery(int num)
{
    for (int k = myStuff.length-1; k>=0; k--)
    {
        if (myStuff[k] < num)
        {
           return k;
        }
    }
return -1;
}

以下哪项最能描述执行以下语句后 myStuff 的内容?

int m = mystery(n); 

答案:位置 m+1 到 myStuff.length-1 中的所有值都大于或等于 n。

谁能解释为什么这个答案是正确的?我不确定它们所说的内容是什么意思,但我得出的结论是 myStuff 没有改变,因为代码不会改变 myStuff 的值。

4

3 回答 3

1

前提条件说,myStuff包含没有特定顺序的整数值。for 循环初始化为k等于myStuff的长度减一(因为数组索引从零开始),在k大于或等于零时进行迭代,并在每次迭代中从k中减一。

如果你看if语句,当myStuff[k]的相应索引处的值小于n时,它将返回k的当前值;因此,数组索引中大于返回值加一的所有值都必须大于或等于n。如果myStuff中没有数字整数大于n,则返回减一。

我希望这有帮助。

顺便说一句 - 你是对的mySyuff的内容没有改变。

于 2013-04-09T16:32:54.367 回答
1

你是对的,myStuff没有改变。但是,他们询问的是数组中的数据、函数的返回值以及函数的参数之间的关系。

该代码执行以下操作:

  • 以相反的顺序迭代数组。(for循环)
  • 在迭代期间的每个索引处,它检查该索引的值是否与,如果更大n则返回当前索引。n(如果声明)

那么该方法返回什么?它从 where 末尾返回第一个索引mystuff[m] < n。( mystuff[i] >= num)

于 2013-04-09T16:32:56.903 回答
0

关于内容的问题是有效的。它与内容本身是否改变无关。

k当有这样的(从myStuff.length-10myStuff[k]小于时n,或者-1当的所有元素myStuff大于或等于时,此方法返回一个非负数n

让我们考虑这两种情况:

  • m 是非负数 - 这意味着该位置是满足条件的右m数最后一个,您的答案是正确的myStaff[m] < n

  • m 是-1- 这意味着所有元素都大于等于m+1(在这种情况下是0) - 因此答案是正确的

于 2013-04-09T16:39:43.623 回答