初学者Java循环/数组作业

时间:2014-04-03 01:45:27

标签: java arrays

嗨,我有一个需要澄清的作业问题,

1

public int f (int n) {
    if (n < 0)
      return 2;
    else
      return f (n - 1) + f (n - 3);
  }

召回时f(3)的值是多少 我知道这循环 所以

f(3) = f(2)+2
     = f(1)+2+2
     = f(0)+2+2+2
     = 8

但我不确定Java是否认为0小于0。

2 个答案:

答案 0 :(得分:3)

Java不认为0小于0.

数组使用从零开始的编号系统,因此最后一个索引将是数组的长度(初始化大小,在本例中为10)减去1。这基本上是从

左转
1, 2, 3, 4, 5, 6, 7, 8, 9, 10

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

所以

names[names.length] = "Hello";

将抛出异常,因为names.length将获得数组中元素的数量,但不会获得数组中的最后一个索引

答案 1 :(得分:2)

0不小于0.等于0.使用<=表示“小于或等于”。

f(3) = f(3-1) + f(3-3)
f(3) = f(2) + f(0)

f(2) = f(2-1) + f(2-3)
f(2) = f(1) + f(-1)

f(1) = f(1-1) + f(1-3)
f(1) = f(0) + f(-2)

f(0) = f(-1) + f(-2)
f(N<0) = 2

回到过去。

f(0) = 2+2
f(1) = 2+2 +2
f(2) = 2+2+2 +2
f(3) = 2+2+2+2 +2+2