11/10/2006

遞回程序之使用

MATLAB Recursive use of function

遞回程序是利用函數呼叫自己,直到特定條件滿足為止。例如:某一數列連續加法,即


Sum=1 + 2 + 3 + 4 + ...+n

下面為這種遞回程序之應用:

function sum=sigma(n)
%Recursive use of function
%Find the sumation of i, if i=1:n
if n>1
sum=n+sigma(n-1);
else
sum=1;
end


執行結果:

>> sigma(5)
ans =
15

這種結果,在MATLAB中不寫程式也可以指令達到相同的目的:

>> sum(1:5)
ans =
15

另外例子:

>> sigma(100)
ans =
5050

>> sum(1:100)
ans =
5050


同樣的道理,若累加改為累乘則會如何呢?實際上程式內容一樣簡單,函數名稱改為factx就行了:


function sum=factx(n)
%Recursive use of function
%Find the multiple prodcut of i, as i=1:n
if n>1
sum=n*factx(n-1);
else
sum=1;
end

執行結果如下:

>> factx(5)
ans =
120

只是,MATLAB竟然將這項功能也變成一個factorial指令了:

>> factorial(5)
ans =

120

結果是不是一樣呢?

沒有留言: