递归调用:
子程序可以互相调用,当调用该子程序本身时,即成了递归子程序。
递归子程序有两个条件:
1.除了不被子程序改变的变量外,所有的变量必须是局部的
2.该子程序要含有停止调用本身的代码。
递归程序编写: 计算阶乘: f(10)
1.写出初始条件: f(1)=1;
2.写出递推通式: f(n)=n*f(n-1) 类似数学归纳法的假设部分
sub f{
my $a=shift;
if($a==1){ ##或者$a==1?1:$a*f($a-1);
return 1;
}
else {
return $a*f($a-1);
}
预定义的子程序:
perl 5预定义了三个字程序,分别在特定的时间执行,你可以自己定义它们,以在特定时间执行所需要的动作。
总结:
一. 子程序的定义sub subname{}
二. 子程序返回值:最后一个执行的语句值
三.参数传递: @_,$_[0],shift. 别名*[通配变量],引用
四.局部变量: my块内可见。Local 调用子程序也可见