Java 为什么这个递归循环等于200?

Java 为什么这个递归循环等于200?,java,recursion,Java,Recursion,我试图理解为什么输出200,因为我认为每次都是加2+(w-1),直到w=0,输出不是更大吗?谢谢 int w = 100; public static int mystery(int w) { if (w<=0) { return 0; } return 2+ mystery(w-1); } intw=100; 公共静态整数神秘(整数w) { 如果(w神秘(100)调用神秘(99)哪个调用神秘(98),…,哪个调用神秘(1),哪个调用神秘(0),递归结束 i、 e.有10

我试图理解为什么输出200,因为我认为每次都是加2+(w-1),直到w=0,输出不是更大吗?谢谢

int w = 100;
public static int mystery(int w)
{
  if (w<=0) {
  return 0;
  }
  return 2+ mystery(w-1);
}
intw=100;
公共静态整数神秘(整数w)
{
如果(w
神秘(100)
调用
神秘(99)
哪个调用
神秘(98)
,…,哪个调用
神秘(1)
,哪个调用
神秘(0)
,递归结束

i、 e.有101个调用,每个调用(除了最后一个,返回
0
)将
2
添加到递归调用返回的值中。100乘以2等于200

换句话说

mystery(0) returns 0
mystery(1) returns 2 + mystery(0) == 2
mystery(2) returns 2 + mystery(1) == 4
...
mystery(99) returns 2 + mystery(98) == 198
mystery(100) returns 2 + mystery(99) == 200

递归一直持续到w变为0。因此,函数被调用101次,加2 100次。

在纸上计算出来。尝试传入0、1、2、3…看看是否可以泛化该模式。(尝试使用这些输入运行代码,使用调试器逐步执行,以帮助您确定是否需要它)。看起来您添加了2100次,输出也是如此。Andy是正确的,请使用调试和检查。请参阅