无法使用Scala停止已定义的递归函数

时间:2018-08-05 16:41:06

标签: scala if-statement

我有以下功能,我无法停止循环并且不明白我要去哪里。

def takeSingleTableDrinkOrder(size: Int): String= {

var order = ""

if (size == 0) order  = "finish"

else order = {

     println("\nHow old are you?")

     var age = readLine.toInt

       if (age < 18) { 

         println("\n\nchoose from the following:\n\n"  
         + "pepsi\n"  
         + "coke\n" ) 

   var input = readLine
   input

  } else {

       println("\nchoose from the following:\n\n"  
       + "pepsi \n"  
       + "coke \n" 
       + "wine \n" 
       +  "beer\n")

  var input = readLine
  input
  }

}

 val drinkOrder = order + ":" + takeSingleTableDrinkOrder(size - 1)

  drinkOrder    
}  

我是Scala的新手,请原谅我的简单问题。

谢谢

1 个答案:

答案 0 :(得分:0)

您想要这样的东西:

def takeSingleTableDrinkOrder(size: Int): String =
  if (size == 0) {
    "finish"
  } else {
    println("\nHow old are you?")

    val age = readLine.toInt

    val order =
      if (age < 18) {
        println("\n\nchoose from the following:\n\n"
                + "pepsi\n"
                + "coke\n")

        val input = readLine

        input
      } else {
        println("\nchoose from the following:\n\n"
                + "pepsi \n"
                + "coke \n"
                + "wine \n"
                + "beer\n")

        val input = readLine
        input
      }

    order + ":" + takeSingleTableDrinkOrder(size - 1)
  }

递归函数应该始终具有一个不会自行调用的路径,但是您的调用在if之外,因此总是被调用。