没有必要跟踪函数的所有递归调用

时间:2015-09-08 00:40:24

标签: c recursion

我发现了一篇文章The secret to understanding recursion,这让我非常困惑。它表明没有必要跟踪递归函数的所有调用。它还说:

  

定义递归函数的程序员通常不会明确考虑调用它所产生的调用顺序。

我不明白这一点。你能解释一下吗?

2 个答案:

答案 0 :(得分:2)

在上下文中,他说,只要每一步都让你更接近基本情况,你就会到达那里,而你不需要逐步完成算法的步骤。意识到这一点。

你可能已经看过阶乘作为例子吗?如果您知道 n ! = n ×( n -1)!步骤是正确的,你知道1! = 1步是正确的,你不需要做所有算术从10获得! = 10×9!降到10! = 10×9×8 ...以验证算法。由于每一步都是正确的,并且 n 每次都变得更小,你将会得到基本情况,你可以从中证明这一点。

答案 1 :(得分:1)

为了让程序员定义递归函数,通常在定义递归函数之前的某个时间点,程序员通常想要了解递归是如何工作的,但文章似乎关注如何定义递归函数尽管有文章标题,而不是理解递归是如何工作的。所以在我看来,文章标题有点误导。

正如已经评论过的,为了理解递归,通常使用简单的递归函数作为学习示例(factorial,Fibonacci,...)。程序员不需要追踪每个级别,但可以考虑在基本案例之上发生的几个级别,以及初始案例和下一个或两个级别。

一旦了解了递归,那么定义一个函数就需要遵循本文中提到的规则。