Labview裡的遞迴(Recursion)
主要軟體:
主要軟體版本: 8.2
主要軟體修正版本:
次要軟體: N/A
問題: Labview有支援遞迴嗎? 我要如何在Labview裡面使用遞迴的VI?
解答: 有,LabVIEW是有支援遞迴的。您可以依循下列步驟建立遞迴的VI。
關於遞迴
一個呼叫自己的VI被稱為遞迴的VI(recursive VI)。 也就是說,如果一個LabVIEW 應用程式(application
)使用了遞迴,為了達到某些特定的目的,它會開啟它自己額外的複本(copy)。舉例來說,其中一個遞迴的熱門應用就是階乘函數的計算(以 ! 表示)。 給定的任意一個正整數的階乘是從1開始往上數到所給定正整數(包含此正整數)的所有正整數的乘積。因此,3! 等於 3*2*1 = 6. 下面所附加的遞迴範例 factorial.vi 是由計算下一個最小的整數乘積而得到最後的計算結果(呼叫自己)。以數學的角度來看,3! = 3*(2!)。 在這個遞迴的階乘函數VI裡,1! 及 0! (一個特例) 被寫定為 1。
可重入VI
有很重要的一點必須注意到的是一個遞迴VI必須開啟它自己的額外複本並儲存在記憶體裡面。 我們也可以稱這個VI為可重入的(reentrant)。也就是說,每一個遞迴VI的實體(instance)都有一個自己本身的資料,這些資料與同一個VI的其他實體的資料是不同的。下列步驟可以確保遞迴 VI 被設定為可重複進入的。
建立遞迴VI的步驟
按照以下步驟,您可以將一個VI設定成可以呼叫自己本身:
- 將想要使用控制器(control)與指示器(indicator)的放置在人機介面上(be sure they have the appropriate representation),然後在人機介面右上角的圖示/連接器面板(connector pane)上點滑鼠右鍵做設定,選擇Show Connector Pane.
- 將VI設成可重入的,選File»VI Properties»Execution»Reentrant execution.
- 在VI的程式區裡,現在所使用 VI 的複本在執行時必須被"Call By Reference Node"呼叫。首先, 開啟functions pallet並且選擇 Application Control»Open VI Reference。 將遞迴 VI 的路徑連起來,並且將options的輸入設定成8這個常數. 這可以使用reference的方式呼叫可重入VI。
- 在Open VI Reference 圖示的 type specifier VI refnum 端點上面選滑鼠右鍵,然後選Create»Constant。 在建好的常數上點選右鍵再選Select VI Server Class»Browse。 查看遞迴VI的位置然後選ok。
- 將新開啟的VI reference 連接到位在Application Control»Call By Reference Node 裡面的Call By Reference Node。並且將線連接到被使用reference呼叫的VI的輸入端跟輸出端(依照使用定義的功能)。
- 使用位於Application Control»Close VI Reference 裡面的Close VI Reference來關閉VI的引用。
- 確保你的遞迴VI有跳出遞迴的設定。也就是說,有些情況必須跳出遞迴而且在不呼叫此遞迴VI額外複本的情況下回傳一個數值。這是最後一步,現在的VI已經設定好且可以用在遞迴的應用上了。
相關連結:
附加檔案: - factorial.vi
報告日期: 02/15/2007
最後更新: 05/09/2008
文件偏號: 46EKS80E
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.