我有以下内容:
public static void main(String[] args){
Screen.clear();
System.out.println(depth(5,0));
}
public static int depth(int n, int depth){
System.out.println(depth);
if(n == 0)return depth;
else{
System.out.println(depth);
return depth(n-1, depth++);
}
}
为什么总是输出0,n次?为什么深度没有增加?
2条答案
按热度按时间nkoocmlb1#
你没有预先增加。你的函数在递增之前传递0,因此实际上没有递增。试试这个:
或(如果要使用后增量)
qyuhtwio2#
第一次调用
depth
时,为n
传递了5,为depth
传递了0(顺便说一句,一般来说,方法和参数使用相同的名称是个坏主意)。你是这样做的:后来,你这样称呼它:
让我们看看会发生什么:
n
中减去1并将结果传递给新的函数调用depth
,然后递增它(depth++
计算其初始值并递增它,而++depth
将首先递增它并计算结果)因此,这些是每次调用时
n
和depth
的值:为了更好地理解这一点,让我们尝试以下内容: