尾部递归是一种编程方法调用,其中方法调用自身,然后立即返回第二次调用的值。换句话说,当方法中的最后一条语句是对同一方法的另一次调用时,就会发生尾部递归。第二次方法调用中的参数通常与第一次不同,但这不是必需的。为...
尾部递归是一种编程方法调用,其中方法调用自身,然后立即返回第二次调用的值。换句话说,当方法中的最后一条语句是对同一方法的另一次调用时,就会发生尾部递归。第二次方法调用中的参数通常与第一次不同,但这不是必需的。为了使递归有效,在其内部调用的方法必须返回一个具体的值,如数字、字符串或其他对象。不返回值的Void方法对递归不起作用。尾部递归存在于许多计算机语言中,包括C递归调用必须是其调用方法中的最后一个语句并不一定意味着递归调用是方法中的最后一行。适当的尾部递归调用也可以在控制结构内部找到,这意味着,在源代码中,控制结构可以结束方法而不是调用。这是重要的区别在这种情况下,控制结构不是一个编程语句,而是计算机语言的一个内置部分。尾部递归存在于许多计算机语言中,包括Java和C。通常,这些递归调用可以使用其他方法重写,例如for循环、while循环,或goto语句。当创建对同一方法的多个连续调用时,可以发现递归的实用性。递归通常是完成重复任务的最干净和最简单的方法。尾部递归的一个常见示例是计算数字的阶乘的方法。此过程非常理想,因为从任何数字开始,每个所以,要求5的阶乘,正确的方法是乘以5*4*3*2*1递归的产生是因为factorial方法是如何构造的:如果factorial为1,则返回1,否则返回给该方法的数字减去1的阶乘。此方法也很有用,因为它可以使用任一类型的尾部递归等价地编写,在最终的方法调用周围有或没有控制语句。尾部递归只是多种递归类型中的一个例子。所有递归类型中的概念本质上都是相同的,即在某种程度上方法调用自身。在这些类型中,尾部递归的区别在于,递归调用的值会立即返回,而调用方法中在该调用之后不会发生其他任何事情
-
发表于 2020-08-07 07:53
- 阅读 ( 851 )
- 分类:电脑网络