|
|
1
8
第二个例子也不是递归的例子。这只是一个我非正式地称之为“链式子程序调用”的例子——我不相信有一个正式的术语。递归要求子例程直接或通过一些中介调用自身。 例如,如果子例程d在某些条件下调用了a、b或c,那么这就是递归。 对于深度调用堆栈,答案取决于:
每次调用子例程时,它都会在调用堆栈上添加一个新帧。在子程序完成之前,该帧保持不变。这个堆栈帧的大小主要取决于参数列表的长度,加上一些固定的开销。 所以在本例中,您将得到一个包含四个元素的堆栈框架。 如果调用链太深,并且每个条目都有一个很长的参数列表,那么最终将耗尽调用堆栈的空间。这称为堆栈溢出。:) |
|
|
2
4
正如其他人所说,您的代码不是递归的,所以不要担心它。但是,如果你消除无用的东西,它会更干净,更容易阅读。
|
|
|
3
3
代码中没有递归。 您的代码可能有递归,但它没有显示在您提供的代码中。 |
|
|
4
0
我同意JSBangs的观点,但另一个替代恶心标签的方法是使用continue语句,而不是“next check”。JSBangs是最好的代码,但是Continue语句有它们的位置。 |
|
|
Carsten · 使用最近的搜索模式更改文本块 1 年前 |
|
|
A.Ellett · 测试-t STDIN与-t<STDIN> 2 年前 |
|
|
con · 如何跳转到foreach迭代的特定点? 2 年前 |