我试图理解为什么这会输出 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);
}
Run Code Online (Sandbox Code Playgroud)
mystery(100)调用mystery(99)哪个调用mystery(98),...,哪个调用mystery(1),哪个调用mystery(0),递归结束。
即有 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
Run Code Online (Sandbox Code Playgroud)