Snippet: BigInt | The Scala Programming Language
IntからBigIntにはシームレスですよーというサンプルだと思う。
package sample.snippet object BigIntSample extends Application { def functional(n: BigInt): BigInt = { if (n == 0) { 1 } else { n * functional(n - 1) } } val f50 = functional(50) val f49 = functional(49) val f4 = functional(4) println("50! = " + f50) println("49! = " + f49) println("4! = " + f4) println("50!/49! = " + (f50 / f49)) }
functionalメソッドは再帰。
階乗を計算するメソッド。心配だったので引数4を追加して確認した。
実行結果。
50! = 30414093201713378043612608166064768844377641568960512000000000000 49! = 608281864034267560872252163321295376887552831379210240000000000 4! = 24 50!/49! = 50
大きな数値も扱えます。