我仍然围绕递归进行思考,并且我认为我得到了像阶乘这样的基本类。但我想进一步澄清,当return语句是一个稍微复杂一些像下面的代码片段:递归与多重回报的混淆
/**
* @param n >= 0
* @return the nth Fibonacci number
*/
public static int fibonacci(int n) {
if (n == 0 || n == 1) {
return 1; // base cases
} else {
return fibonacci(n-1) + fibonacci(n-2); // recursive step
}
}
在return语句,确实斐波那契(N-1)完全重现通过,才去下来斐波那契(n-2)的步骤(这是否有道理)?如果是这样,这似乎很难设想。
如果很难想象,只需使用调试器浏览代码即可。这会告诉你*究竟发生了什么。 – tadman
假设上面是单线程的,是的。 –
'fibonacci(n-1)+ fibonacci(n-2);'的顺序未指定,可以先执行 – CoryKramer