3.6函式檔案的定義與呼叫
函式檔案的基本結構
函式呼叫
匿名函式
1. 函式檔案的基本結構
function 輸出形參表=函式名(輸入形參表) //function定義乙個函式
注釋說明部分
函式體語句
當有多個形參時,形參之間用逗號分隔,組成形參表。當輸出形參多於乙個時,應該用方括號括起來,構成乙個輸出矩陣。
tip:
函式檔名通常由函式名再加上副檔名.m組成,函式檔名與函式名也可以不相同。當函式檔名與函式名不相同時,matlab將忽略函式名,呼叫時使用函式檔名。
return語句表示結束函式的執行。通常,在函式檔案中也可以不使用return語句,那麼被呼叫函式執行完成後會自動返回。
例1 編寫函式檔案,求半徑為r的圓的面積和周長。
function [s,p]=fcircle(r) //方括號括起來 函式名為fciecle 形參為r
s=pi*r*r;
p=2*pi*r;
2. 函式呼叫
呼叫格式:
[輸出實參表]=函式名(輸入實參表)
在呼叫函式時,函式輸入輸出引數稱為實際引數,簡稱實參。
要注意函式呼叫時,順序和個數要與形參的一致。先將實參傳遞給相應的形參。在執行函式的功能。
在matlab命令列視窗呼叫前面定義的fcircle函式。
>> [s,p]=fcircle(10)
s =
314.1593
p =62.8319
3. 匿名函式
基本格式:
匿名函式輸入引數指出定義關於什麼函式的匿名引數,如果函式有多個輸入引數時,引數之間用逗號分隔。
>> f=@(x,y) x^2+y^2
f =
@(x,y)x^2+y^2
>> f(3,4)
ans = 25
還可以給已經存在的函式定義函式控制代碼,利用函式控制代碼來呼叫函式。
例題:
第②問的函式檔案f2.m。
function f=f2(n)
f=0;
for k=1:n
f=f+k*(k+1); //每次把k*k+1累加到f中去
end指令碼檔案mf.m。
f1=@(n) n+10*log(n*n+5);
y1=f1(40)/(f1(30)+f1(20))
y2=f2(40)/(f2(30)+f2(20))
>> mf //執行mf檔案,得出兩種fn定義得到的y值
y1 = 0.6390
y2 = 1.7662
3.7 函式的遞迴呼叫
函式的巢狀呼叫
函式的遞迴呼叫
1.函式的巢狀呼叫
如果在乙個函式的定義中呼叫了其他函式這就是函式的巢狀呼叫。
2.函式的遞迴呼叫
乙個函式呼叫它自身稱為函式的遞迴呼叫。
fact函式中呼叫fact函式
遞迴?是把乙個大型複雜的問題層層轉化為乙個與原問題相似的規模較小的問題來求解。
減少了程式的**量,但會加大儲存空間和時間的開銷。
(1)直接遞迴呼叫
(2)間接遞迴呼叫——巢狀呼叫其他函式
tip:在程式中,死迴圈是不允許的。在函式中需要有使遞迴終止的語句。
例1 利用函式的遞迴呼叫,求n!。
n!本身就是以遞迴的形式定義的:
函式檔案fact.m如下:
function f=fact(n)
if n<=1
f=1;
else
f=fact(n-1)*n; //遞迴呼叫求(n-1)!
end在指令碼檔案a.m中呼叫函式檔案fact.m,求n!。
s=0;
n=input('please input n=');
s=fact(n);
disp(s)
在命令列視窗執行命令檔案:
>> a
please input n=3
執行過程如下:
遞迴定義有兩個要素:
(1)遞迴終止條件
(2)是問題向終止條件轉化的規則
例2 fibonacci數列定義如下:
首先建立函式檔案ffib.m。
function f=ffib(n)
if n>2
f=ffib(n-1)+ffib(n-2);
else
f=1;
end建立程式檔案test.m。取n=20.
f=; //定義空向量
for k=1:20 //20次迴圈
f=[f,ffib(k)*ffib(k)]; // ffib(k)*ffib(k)追加到f中去,成為一行 有20個元素的平方
endsum(f)
ffib(20)*ffib(21)
執行結果為:
>> test
ans = 74049690
ans = 74049690
python04 函式的定義 呼叫與遞迴
一 函式的定義 python的函式部分我覺得難點在與函式的引數,所以準備單獨寫關於引數的部分。而本文就寫關於定義 呼叫以及函式的遞迴。python中函式的定義格式為 def 函式名 引數名,引數名 下面縮排後寫函式內容。比如說寫乙個能返回我我自己名字的函式 不要說我自戀 def re name na...
函式呼叫與遞迴
遞迴,就是遞迴的呼叫自己,直到滿足結束條件並返回。這是大部分材料對遞迴的定義,從程式上看也符合一般的觀感。但是,不了解函式的呼叫過程,對這句話的理解還是會模糊不清的。函式是怎麼呼叫自己,又是如何返回的?下面是常用來說明遞迴呼叫的例子 遞迴求n的階乘n int factorial int n 遞迴是程...
函式的定義與呼叫
首先來了解一下概念 1.函式的定義 函式的定義就是對函式所要完的操作進行描述,即編寫一段程式,使該段程式完成函式所指定的操作。一般函式需要先定義後使用。沒有定義的函式不能使用。除主函式外的函式不能單獨執行,這些函式可以被主函式或其他函式呼叫,也可以條用其他函式,但不能呼叫主函式。2.函式的呼叫 程式...