MATLAB - 遞迴函式



遞迴函式是程式設計中的一個重要概念,可以成為MATLAB中寶貴的工具。遞迴函式是一個呼叫自身來解決問題的函式。

什麼是遞迴函式?

遞迴函式是一個透過將其分解成更小、更容易管理的子問題來解決問題的函式。每次呼叫該函式時,它都會處理問題的一小部分,直到達到基本情況。基本情況是函式停止呼叫自身並返回結果的條件。

遞迴函式在MATLAB中如何工作?

在MATLAB中,遞迴函式遵循與其他程式語言相同的原則。以下是遞迴函式工作方式的分步說明:

定義你的基本情況,處理遞迴必須停止的情況。如果沒有基本情況,函式將無限地呼叫自身,並導致堆疊溢位。

在遞迴情況下,函式使用修改後的引數呼叫自身,以處理問題的一小部分。

當函式從每個遞迴呼叫返回時,結果將組合起來以解決整個問題。

遞迴將持續進行,直到達到基本情況,此時函式開始將結果返回到呼叫堆疊。

遞迴函式示例

讓我們檢查下面給出的示例,該示例使用遞迴函式計算給定數字的階乘。讓我在示例中為您標記屬於基本情況和遞迴情況的程式碼。

示例1:計算給定數字的階乘

我們將使用遞迴技術來計算給定數字的階乘。

給定數字的階乘表示為“n!”:

n! = n × (n - 1) × (n - 2) × ... × 3 × 2 × 1

所以 10!= 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1

以下是執行此操作的程式碼:

function result = factorial(n)
   % Base case
   if n == 0
      result = 1;
   else
      % Recursive case
      result = n * factorial(n - 1);
   end
end

在這個例子中,基本情況是當 n 為 0 時,遞迴情況計算 n 乘以 n-1 的階乘。該函式會呼叫自身,直到 n 達到 0。

讓我們首先在matlab中建立如下所示的函式:

recursive case

現在讓我們在matlab命令視窗中執行相同的操作,如下所示:

fact = factorial(10)

在matlab命令視窗中的執行將給出以下輸出:

>> fact = factorial(10)

fact = 3628800

示例2:斐波那契數列

斐波那契數列是一系列數字,從 0 和 1 開始,每個後續數字都是前兩個數字之和。

該序列是無限的,它從以下開始:0, 1, 1, 2, 3, 5, 8, 13, 21, 34,依此類推。

在下面的示例中,讓我們檢查如何計算 10 的斐波那契數列。

function result = fibonacci(n)
   % Base case
   if n == 0
      result = 0;
   elseif n == 1
      result = 1;
   else
      % Recursive case
      result = fibonacci(n - 1) + fibonacci(n - 2);
   end
end

讓我們在matlab中建立如下所示的函式:

function fibonacci

讓我們在matlab命令視窗中執行fibonacci()函式,如下所示:

result = fibonacci(10)

輸出如下:

>> result = fibonacci(10)

result =

    55

遞迴函式的程式碼生成

MATLAB 中遞迴函式的程式碼生成是指一種將包含遞迴函式的 MATLAB 程式碼自動轉換為另一種程式語言的方法,這種語言通常更適合在目標平臺或硬體上執行。

MATLAB 中的程式碼生成可以使用編譯時遞迴或執行時遞迴來為遞迴函式生成程式碼。

編譯時遞迴

在編譯時遞迴中,程式碼生成器將在程式從 MATLAB 程式碼轉換為機器程式碼時計算遞迴函式需要自呼叫的次數。這發生在程式執行之前。它預先確定遞迴呼叫的次數並相應地生成程式碼。

執行時遞迴

在執行時遞迴中,程式碼生成器生成的程式碼可以在程式執行時動態處理遞迴呼叫。這種方法事先不知道遞迴的深度,因此它建立更靈活的程式碼,可以在執行時適應不同的情況。

廣告
© . All rights reserved.