gpt4 book ai didi

scala - 在 block 中调用 def

转载 作者:行者123 更新时间:2023-12-02 07:44:56 25 4
gpt4 key购买 nike

如果有任何方法可以从 block 中调用 def

def factor (n: Int) : Int = if (n == 0 ) 1 else  n * factor(n-1)

val i = 1000

i.toString.foreach ( x => sum += factor(x.toInt) )

最后我想得到每个数字的阶乘之和

但是好像def没有返回值,每次都是0

如何解决?

谢谢!

最佳答案

这个问题实际上与 Scala 本身无关;你的代码和你的 def 都很好。问题在于 toInt:

scala> '3'.toInt
res7: Int = 51

toInt 实际上并未将其转换为十进制数字,而是转换为 unicode(ish?)字符值。这些正在产生非常大的数字,超出了 factor 可以处理的范围:

scala> factor(6)
res8: Int = 720

scala> factor(20)
res9: Int = -2102132736

scala> factor(100)
res10: Int = 0

所以改用(感谢 Luigi)

x.asDigit

关于scala - 在 block 中调用 def,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7745629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com