当前位置: 首页 > 知识库问答 >
问题:

递归函数不返回Int

卢聪
2023-03-14

我有一个递归函数,它会重复这个函数,直到不满足if条件,然后输出一个整数。但是,此函数之外需要整数的函数正在接收一个单位。我应该如何修改代码以返回int?

count(r,c,1,0)

   def count(r: Int, c: Int, countR: Int, lalaCount: Int): Int = {
    if (countR < (r + 1)) count(r,c,countR + 1, lalaCount + countR)
    else (lalaCount + c + 1)
   }

这就是整个程序

object hw1 {
  def pascal(c: Int, r: Int): Int = {

   count(r,c,1,0)

   def count(r: Int, c: Int, countR: Int, lalaCount: Int): Int = {
    if (countR < (r + 1)) count(r,c,countR + 1, lalaCount + countR)
    else (lalaCount + c + 1)
   }
  } //On this line eclipse is saying "Multiple markers at this line
    //- type mismatch;  found   : Unit  required: Int
    //- type mismatch;  found   : Unit  required: Int
pascal(3,4)

}

共有1个答案

卓麒
2023-03-14

pascal返回的值是它包含的最后一个表达式。你想让它成为你对count的评估,但这不是最后一件事。工作分配(def、val等)属于Unit类型,正如您所发现的:

  def pascal(c: Int, r: Int): Int = {

   count(r,c,1,0) // => Int

   def count(r: Int, c: Int, countR: Int, lalaCount: Int): Int = {
    if (countR < (r + 1)) count(r,c,countR + 1, lalaCount + countR)
    else (lalaCount + c + 1)
   } // => Unit
  }

只需将计数(r,c,1,0)移到def之后,就可以解决问题。

 类似资料:
  • 问题内容: 我编写了以下函数,以实现自己的二进制搜索 我知道我的实现已经关闭,但是我对理解递归堆栈更加好奇。 当我调用时,我的函数应返回的值 但相反,它返回None。此外,当我直接调用时 ,我得到的正确值为0。这怎么可能? 问题答案: 您将忽略递归调用的返回值。您还需要 显式地 返回它们: 递归调用与其他任何函数调用一样;他们将结果返回给调用者。如果忽略返回值,然后调用函数结束,那么您将以该调用函

  • 我正在编写一个递归函数,如下所示: 此函数用于接收员工并查找其管理者。如果找到管理器,则将管理器id推送到数组中($)- 所以我的问题是,如果我不在第6行返回递归调用(这是-

  • 我想写返回true的Python函数一个字符串s是回文,也就是等于它的反。例如,“赛车”和“abba”是回文。到目前为止,这是我不成功的尝试。 当我告诉我的函数返回相反的结果时,我没有问题,但是,我不知道应该如何进行比较才能返回一个布尔值。 使用上面的函数会产生以下错误 现在我完全理解为什么会产生上述错误。这是因为一些递归函数返回一个boool并尝试将其添加到字符串中;但是我做不到的是如何避免这个

  • 问题内容: 我有一个计算税金的函数。 我不明白为什么它不能停止递归。 问题答案: 在您的职能部门中: 您没有从函数或设置中返回值。当您不返回任何内容时,返回值为。 也许,您想要这样:

  • 问题内容: 我有这段代码,由于某种原因,当我尝试返回路径时,我得到None: 有办法解决吗?提前致谢。 问题答案: 你需要返回递归结果: 否则,该函数仅在执行该语句后结束,导致None返回。 你可能要下降了,总是返回结尾: 因为如果是,False那么你也将在没有功能的情况下结束功能return。如果在这种情况下None递归不是正确的选择,而在返回则不是正确的选择,那么你也需要处理这种边缘情况。

  • 问题内容: 我有一个像这样的递归函数 我正在使用它 我注意到您好永远不会返回,因为我怀疑我在递归调用上创建了多个promise,但是我不确定如何从中返回。 如何返回每个递归创建的Promise? 编辑: 结果是 问题答案: 递归是一种功能性遗产,因此将其与功能性样式一起使用可产生最佳效果。这意味着编写接受和操作其输入(而不是依赖于外部状态)和返回值(而不是依赖于突变或副作用)的函数。 你的程序,而