函数文件举例例:交换两个变量的值myswap.mfunction[a,b] = myswap(x,y)1%swapx andyy;x;函数可以有多个输入参数和多个输出参数也可以没有输入参数或输出参数6
6 函数文件举例 function [a,b] = myswap(x,y) % swap x and y a = y; b = x; 例:交换两个变量的值 myswap.m ⚫ 函数可以有多个输入参数和多个输出参数 ⚫ 也可以没有输入参数或输出参数
函数文件举例例:打印杨辉三角形printyh.mfunction printyh(n)%打印杨辉三角形,本函数没有输出参数yh=1;disp(yh);if n==1, return; endyh=[1,1]; disp(yh);for k=3:nk2=cei1(k/2);yh_old=yh;for i=2:k2yh(i)=yh_old(i-1)+yh_old(i);endyh(k2+1:k)=yh(k-k2: -1:1); disp(yh)end7
7 function printyh(n) % 打印杨辉三角形, 本函数没有输出参数 yh=1; disp(yh); if n==1, return; end yh=[1,1]; disp(yh); for k=3:n yh_old=yh; k2=ceil(k/2); for i=2:k2 yh(i)=yh_old(i-1)+yh_old(i); end yh(k2+1:k)=yh(k-k2:-1:1); disp(yh); end 函数文件举例 例:打印杨辉三角形printyh.m
函数调用函数调用的一般格式输出实参列表=函数名(输入实参列表)函数调用时,实参的顺序应与函数定义时形参的顺序一致实参与形参之间的结合是通过值传递实现的函数可以嵌套调用,即一个函数可以被其它函数调用,甚至可以被它自身调用,此时称为递归调用函数所传递的参数具有可调性,Matlab用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数8
8 ⚫ 函数调用的一般格式 输出实参列表=函数名(输入实参列表) ⚫ 函数调用时,实参的顺序应与函数定义时形参的顺序一致 ⚫ 实参与形参之间的结合是通过值传递实现的 ⚫ 函数可以嵌套调用,即一个函数可以被其它函数调用, 甚至可以被它自身调用,此时称为递归调用 ⚫ 函数所传递的参数具有可调性,Matlab 用两个永久变量 nargin 和 nargout 分别记录调用该函数时的输入实参 和输出实参的个数 函数调用
递归函数举例例:利用函数的递归调用计算n!1,n=1n! :n>1n(n-1)!,%函数文件 myfactor.mfunction y=myfactor(n)if n<=1y=1;elsey=n*myfactor(n-1);end9
9 1, 1 ! ( 1)!, 1 n n n n n = = − % 函数文件 myfactor.m function y=myfactor(n) if n<=1 y=1; else y=n*myfactor(n-1); end 例:利用函数的递归调用计算 n! 递归函数举例