免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1173 | 回复: 5
打印 上一主题 下一主题

请高手帮我看看程序,怎么会是死循环? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-11 22:49 |只看该作者 |倒序浏览
1#!/usr/bin/perl
2use strict;
3use warnings;
4my @genes=qw(zgene1 agene2 mgene3 ygene4 sgene5 fgene6 lgene7);
5print "please enter your gene name here:\n";
6my $query=<STDIN>;
7chomp $query;
8my @sorted_genes=sort @genes;
9print @sorted_genes, "\n";
10my $foundflag=0;
11if (binary_search($query, @sorted_genes)) {
12        print "The gene query is known!\n";
13       
14}else {
15        print "The gene query is not known!\n";
16}
17exit;
18sub binary_search {
19my($query, @array)=@_;
20@array or return 0;
21my $begin=0;
22my $end=$#array;
23while (($end-$begin)>=0) {
24        my $mid_point=int ((($end-$begin)/2)+$begin);
25        print $array[$mid_point], ":", "@array[$begin...$end]","\n";
26        my $test=$query cmp $array[$mid_point];
27    if ($test==0) {
28                return $query;
29   }
30        elsif ($test==-1){
31                $end=$mid_point-1;}
32                elsif  {
33                        $end=$mid_point+1;
34                }
35}
36return 0;
37}

论坛徽章:
2
CU大牛徽章
日期:2013-04-17 11:46:28CU大牛徽章
日期:2013-04-17 11:46:39
2 [报告]
发表于 2012-07-11 23:07 |只看该作者
本帖最后由 cdtits 于 2012-07-11 23:08 编辑

将 binary_search($query, @sorted_genes) 的第二个参数改为引用吧
同时函数里面处理部分也要改一下!

论坛徽章:
0
3 [报告]
发表于 2012-07-11 23:18 |只看该作者
改为引用,什么意思,不是很明白,因为自己刚开始学习perl。


   

论坛徽章:
0
4 [报告]
发表于 2012-07-12 13:42 |只看该作者
加上\,估计是这个意思:
binary_search($query, \@sorted_genes)

论坛徽章:
0
5 [报告]
发表于 2012-07-12 13:52 |只看该作者
我运行下程序,子函数有BUG,最后一个elsif,应该改为else,然后运行,没有死循环。。。。。

论坛徽章:
0
6 [报告]
发表于 2012-07-12 15:23 |只看该作者
感谢xmchenb的热心指导,现在明白了,非常感谢!


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP