遞回程序之使用
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
結果是不是一樣呢?
沒有留言:
張貼留言