我知道這不是匿名函數,但是我試圖通過匿名函數做一個遞歸函數。遞歸函數的原型顯然是階乘函數。問題在於,難以區分範圍內的的匿名功能。我設法到目前爲止做的是以下幾點:遞歸匿名函數Matlab
[email protected](cn,n,f)eval('if n>1; f(cn*n,n-1,f);else;ans=cn;end');
[email protected](n)f(1,n,f);
或者:
[email protected](cn,n,f)eval('if n>1; f(cn*n,n-1,f);else;disp(cn);end');
[email protected](n)f(1,n,f);
什麼不是很滿意的是,你還當直接分配不能使用此功能,a=f(3)
仍然會產生一個錯誤,因爲eval
沒有得到價值。
所以我的問題是,你真的可以做一個遞歸函數,通過匿名函數,例如,以某種方式計算階乘,例如, a=f(3)
只依賴原生matlab函數(或者你可以在命令行中創建的函數,就像我在我的例子中那樣)? PS:我知道這沒有任何實際用途,它只是一個挑戰,你可以彎曲和濫用Matlab的語法。
你的意思是匿名函數嗎?函數句柄似乎是對我更廣泛的一類對象。但我不是專家,所以我真的在問。 –
@AndrasDeak我當然知道,謝謝你指出這一點! – flawr
目前還沒有Matlab的存取權限,但是你是否嘗試過這樣做?如果n> 1; F(CN * N,N-1,F);其他; CN; end'? – patrik