更新時(shí)間:2022-08-09 10:13:29 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1697次
遞歸 是一種巧妙而巧妙的構(gòu)造,它允許函數(shù)調(diào)用自身。Matlab 編程語(yǔ)言支持它,因此函數(shù)可以在自己的執(zhí)行過(guò)程中調(diào)用自己。Java遞歸方法可以直接在 Matlab 中實(shí)現(xiàn)。
這是一個(gè)簡(jiǎn)單的遞歸示例,我們來(lái)詳細(xì)說(shuō)明.
遞歸代碼示例:
function y = ten_exp(n)
% 這是一個(gè)計(jì)算 y = 10^n 的遞歸程序。
% 該程序僅在 n 為非負(fù)整數(shù)時(shí)才有效。
% 如果 n 為負(fù)數(shù),算法不會(huì)停止。
if n == 0
y = 1
else
n %<< 此行不需要,但用于檢查
y = 10 * ten_exp(n-1)
end
在這些語(yǔ)句中(故意)避免使用分號(hào),以查看不同級(jí)別的遞歸中的值更新。您可以通過(guò)在編輯器中運(yùn)行分步功能來(lái)探索代碼。
此代碼具有使用分支的構(gòu)造。比較 n == 0 是遞歸的基礎(chǔ),因?yàn)樗x了最后一步或最低級(jí)別。這是讓程序停止調(diào)用自身的唯一方法。
分支中的“ else ”部分是遞歸的關(guān)鍵。訣竅是它調(diào)用了一個(gè)較低的值 (n - 1),并且它將繼續(xù)這樣做,直到它下降到 n = 0。
使用這種自調(diào)用技術(shù)時(shí)有幾個(gè)注意事項(xiàng):
第一個(gè)是函數(shù)可能永遠(yuǎn)調(diào)用自己并且永遠(yuǎn)不會(huì)返回答案。如果我們輸入一個(gè)否定的參數(shù),就會(huì)在上面的代碼中發(fā)生這種情況。
第二個(gè)是遞歸會(huì)導(dǎo)致冗余計(jì)算,這可能很耗時(shí)。上面的代碼一次又一次地使用可以使用單行代碼 (10^n) 執(zhí)行的指令。
第三個(gè)考慮是它需要更多的內(nèi)存分配。在大型系統(tǒng)的計(jì)算中,不應(yīng)將內(nèi)存空間浪費(fèi)在程序開(kāi)銷上。
另一方面,遞歸程序比非遞歸程序更容易編寫和閱讀。
現(xiàn)在,我們將再次使用這種技術(shù)編寫一個(gè)函數(shù)來(lái)計(jì)算階乘 (n!)。我們知道這不是計(jì)算階乘數(shù)的最有效方法,但它在概念上是一種易于測(cè)試和實(shí)現(xiàn)的遞歸計(jì)算.
function y = fact(n)
% 我們有最大的數(shù)
y = n
%如果n == 0
y = 1則 我們下降到 0
否則% 我們乘以前面的所有整數(shù),% 一次一個(gè)... y = y * fact(n-1) end
同樣,這些是此示例的注意事項(xiàng):
該函數(shù)可能會(huì)永遠(yuǎn)調(diào)用自己并且永遠(yuǎn)不會(huì)返回答案。如果我們輸入一個(gè)否定的參數(shù),就會(huì)在上面的代碼中發(fā)生這種情況。
有可能是耗時(shí)的冗余計(jì)算。上面的代碼一次又一次地使用可以使用單個(gè)內(nèi)置函數(shù)(factorial(n))執(zhí)行的指令。
以上就是關(guān)于“matlab遞歸調(diào)用的例子”介紹,大家如果對(duì)此比較感興趣,想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java教程,里面有更豐富的知識(shí)等著大家去學(xué)習(xí),相信對(duì)大家一定會(huì)有所幫助的。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743