小编J L*_*J L的帖子

Scala中硬币更改的StackOverflowError?

我正在为Scala中的Coin(更改)问题编写递归函数.

我的实现打破了StackOverflowError,我无法弄清楚它为什么会发生.

Exception in thread "main" java.lang.StackOverflowError
    at scala.collection.immutable.$colon$colon.tail(List.scala:358)
    at scala.collection.immutable.$colon$colon.tail(List.scala:356)
    at recfun.Main$.recurs$1(Main.scala:58) // repeat this line over and over
Run Code Online (Sandbox Code Playgroud)

这是我的电话:

  println(countChange(20, List(1,5,10)))
Run Code Online (Sandbox Code Playgroud)

这是我的定义:

def countChange(money: Int, coins: List[Int]): Int =  {

  def recurs(money: Int, coins: List[Int], combos: Int): Int = 
  {    
      if (coins.isEmpty)
          combos
      else if (money==0)
          combos + 1
      else
          recurs(money,coins.tail,combos+1) + recurs(money-coins.head,coins,combos+1)

  }
  recurs(money, coins, 0)
} 
Run Code Online (Sandbox Code Playgroud)

编辑:我刚刚在mix中添加了else if语句:

else if(money<0)
    combos
Run Code Online (Sandbox Code Playgroud)

它摆脱了错误,但我的输出是1500的东西:(我的逻辑有什么问题?

scala

8
推荐指数
2
解决办法
6017
查看次数

如何增加传递给Scala函数的整数变量?

我在函数外声明了一个变量,如下所示:

var s: Int = 0
Run Code Online (Sandbox Code Playgroud)

通过它如下:

def function(s: Int): Boolean={

   s += 1

   return true

}
Run Code Online (Sandbox Code Playgroud)

但是对于我的生活,错误线不会在"s + ="之下消失.我尝试了一切.我是Scala bww的新手.

scala parameter-passing immutability

7
推荐指数
1
解决办法
7206
查看次数

标签 统计

scala ×2

immutability ×1

parameter-passing ×1