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 次瀏覽

開啟你的 職業

完成課程即可獲得認證

開始
廣告
© . All rights reserved.