perl 函数中标量参数和数组混合传递的问题

最近在用perl写遗传算法的时候遇到了一些实际问题,譬如需要在函数中同时传递标量参数和多个数组;
下面我将用到的方法做一个简要介绍。为了简要说明问题,我用简化的函数示例
#该示例中,重组交换函数需要传递重组率cross_rate(标量),亲本1和亲本2的DNA序列(数组)。
代码如下:

#!usr/bin/perl -w
sub cross {
	my $cross_rate = $_[0];		#传入重组率参数
	my @parent1  = @{$_[1]}; 	#传入亲本1的DNA标记
	my @parent2  = @{$_[2]};	#传入亲本2的DNA标记
	my @result = ();
	if($cross_rate > 0){
		my @tmp = @parent1;
		@parent1 = @parent2;
		@parent2 = @tmp;
  	}
  	push(@result,[@parent1]);
  	push(@result,[@parent2]);
	return @result;			#将结果返回给二维的@result数组
}

#测试函数的运行结果
my @p1 = ( 2 .. 10);
my @p2 = (6 .. 14);
print "Before Corss:\n";
print "@p1\n";
print "@p2\n";

my @cross_result = &cross(0.5,\@p1,\@p2);	#调用重组函数,并将函数运行结果返回给@cross_result
print "After Corss:\n";
print "@{$cross_result[0]}\n";
print "@{$cross_result[1]}\n";

程序运行结果如下:
在这里插入图片描述


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值