Ruby 编程语言中递归是如何工作的?
直接或间接调用自己的函数被称为递归函数,将相应函数称为递归函数。递归简化了流程,它能显著减少编译时间。
我们将借助一个非常简单的示例来理解 Ruby 中的递归概念。
假设给我们一个数组,我们希望打印数组所有元素的乘积,为此,我们有两个选择,可以循环迭代地执行,也可以递归地执行。
示例 1
让我们首先以循环迭代的方式来做。考虑下面显示的代码,其中每个元素的乘积由函数返回。
# Iterative program to print multiplication of array elements def iterativeMultiplication(arr) mul = 1 arr.each do |num| mul *= num end puts mul end iterativeMultiplication([1, 2, 3, 4, 5])
输出
将生成以下输出 −
120
示例 2
现在让我们以递归的方式来做。考虑下面显示的递归代码。
# Recursive program to print multiplication of array elements def recursiveMultiplication(arr) return 1 if arr.length == 0 arr[0] * recursiveMultiplication(arr[1..-1]) end puts recursiveMultiplication([1,2,3,4,5])
输出
将生成以下输出 −
120
示例 3
现在我们来看另一个示例,这是一个非常著名的递归问题。问题在于打印著名的第 n 个斐波那契数。
考虑以下所示的代码 −
# print fibonacci nth number in ruby def printFib( n ) return n if ( 0..1 ).include? n ( printFib( n - 1 ) + printFib( n - 2 ) ) end puts printFib( 5 )
输出
将生成以下输出 −
5
广告