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

更新于: 2022 年 1 月 25 日

300 次浏览

开启你的 职业

完成课程即可获得认证

开始
广告