当前位置: 高中信息技术 / 单选题
  • 1. (2021高一下·东台月考) 现有18枚硬币,18枚硬币中有一个是伪造的,并且那个伪造的硬币比真的硬币要轻。有一台用来比较两组硬币重量的仪器,使用递归及分治法设计一个算法,找出那枚伪造的硬币。阅读下列程序代码。

    def check3(a,right,left):

        b=(left-right+1)//3

        if right==left:

            index=right+1

            return index

        elif right+1==left:

            if a[right] < a[left]:

                index=right+1

                return index

            else:

                index=left+1

                return index

        else:       

            if sum(a[right:right+b]) == sum(a[right+b:right+2*b]):

                return check3(a,right+2*b,left)                       

            elif sum(a[right:right+b]) > sum(a[right+b:right+2*b]):   

                return check3(a,right+b,right+2*b-1)                

            else:

                return check3(a,right,right+b-1)                   

    a = [1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1]

    index1=0

    right0 = 0

    index1= check3(a,right0,len(a))

    print("你要找的假币在第",index1,"个位置")

    input("运行完毕,请按回车键退出...")

    假设列表a中,0表示伪造的硬币,下列说法正确的是(     )

    A . 此程序递归部分为三分法递归查找伪造的硬币 B . sum(a[right:right+b])==sum(a[right+b:right+2*b])表示第二组的重量与第三组重量相同 C . 此程序递归部分为二分法递归查找伪造的硬币 D . 以上都不对

微信扫码预览、分享更方便