eclipse - scala中的尾递归,这里我在eclipse IDE中运行scala代码,但没有输出
问题描述
object TailRec extends App {
def anotherFactorial(x: Int): BigInt = {
@tailrec
def helperFact(n: Int, accu: BigInt): BigInt =
if(n <= 1)
accu
else
helperFact(n-1, n * accu)
helperFact(x, 1)
}
println(anotherFactorial(5000)) // I want output but in console no output is printed
}
解决方案
这不起作用有两个可能的原因(两者都与递归函数无关)。
如果打算将其作为程序的入口点,那么问题在于 Eclipse 未配置为TailRec
用作入口点。如果您没有收到来自 Eclipse 的警告,那么您可能有另一个默认使用的入口点(例如object Main extends App
)。您需要将 Eclipse 配置为TailRec
用作入口点对象。
如果这打算成为具有不同入口点的应用程序中的对象,那么问题在于它扩展了App
它对初始化对象的方式做了奇怪的事情。删除这个超类并调用anotherFactorial
它应该运行你的println
语句。(您需要调用方法或检查对象中的值才能对其进行初始化)
在这两种情况下,您都可以使用简单println
的 in 进行测试,object
因为递归阶乘函数不相关(并且工作正常!)
推荐阅读
- python - 在 ROS 中,如何将姿势从 kinect 帧转换为 PR2 的 base_link 帧?
- scala - 为什么“1 Math.pow 2”在 scala 中不起作用?
- scroll - 如何在 Flutter 中滚动或跳转到 PageView.builder 或 PageController 的位置?
- firebase - Firebase.Database.FirebaseException:处理请求时发生异常
- java - 我如何随机执行按钮的动作
- r - 将列表转换为R中的DataFrame?错误:获取默认列名(x1、x2、x3..)而不是列表中的名称
- python-3.x - 在我不希望它发生的情况下跳过 for 循环中的索引
- swift - 如何快速实现Appkit的颜色变化?
- vb.net - 如何更新 DataGridView 控件左侧可见代码中的行指针
- reactjs - 使用常量输入参数反应钩子 - 钩子创建者?