嗨,我有一个需要澄清的作业问题,
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。
答案 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