【问题标题】:Uisng abstract with Bainry Search in Kotlin在 Kotlin 中使用带有二进制搜索的抽象
【发布时间】:2023-01-24 23:27:12
【问题描述】:

我在 kotlin 中有使用抽象类的任务,这个例子是关于二进制搜索的
所以它在运行中显示错误消息!
第一类是非

  • 头等舱有一个非抽象类,但它是一个父类
  • seconed一个继承父类的抽象类
  • 第三个显示操作的类

那是我的代码:
 open class BinarySearch(){
fun BinarySearchFunction(arr: Array<Int>, l: Int, r: Int, x: Int): Int {
    if(r>=1){
      var mid:Int=1+(r-1)/2
        if (arr[mid]==x){
            return mid
        }
        if(arr[mid]>x){
            return BinarySearchFunction(arr,l,mid-1,x)
       }
        return BinarySearchFunction(arr,mid+1,r,x)
    }
    return -1
}
      open fun displayMassage(Massage:String){}

}
abstract class print():BinarySearch(){
 fun Function() {
    var obj = BinarySearch()
    var a = arrayOf<Int>(2, 3, 4, 10, 40)
    var n = a.size
    var x = 10
    var result = obj.BinarySearchFunction(a, 0, n - 1, x)
    if(result==-1)
        println("Element not present")
    else
        println("Element found at index $result")
}
}
 class display():print(){
      override fun displayMassage(massage:String){
          println(massage)
     }
 }
fun main() {
var dis=display()
    dis.displayMassage("The Binary Search : ")
    dis.Function()
}

【问题讨论】:

    标签: kotlin


    【解决方案1】:

    您在算法的实现中出错,导致它进行无限递归。我相信

    var mid:Int=1+(r-1)/2
    

    实际上需要

    var mid:Int=l+(r-1)/2
    

    【讨论】:

      猜你喜欢
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多