【发布时间】:2018-01-23 16:00:08
【问题描述】:
我仍然在考虑递归,我想我得到了像阶乘这样的基本方法。但是,当 return 语句像下面的 sn-p 一样复杂一点时,我想进一步澄清:
/**
* @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 语句中,fibonacci(n-1) 是否完全重复,然后再执行 fibonacci(n-2) 步骤(这有意义吗)?如果是这样,这似乎很难想象。
【问题讨论】:
-
如果难以想象,只需使用调试器逐步检查您的代码。这会准确地告诉你发生了什么。
-
假设上面是单线程的,是的。
-
fibonacci(n-1) + fibonacci(n-2);的顺序不明确,可以先执行 -
你也可以在纸上做。尝试使用 n = 4,这只是几个步骤。
-
公共静态气味 JAVA