Tail Recursion


 // Tail Recursion
  def factn(n:Int, acc:BigInt) : BigInt =
  	if(n <= 2) acc else factn(n-1, n*acc)     //> factn: (n: Int, acc: BigInt)BigInt
  	
  factn(10000,1)                                  //> res11: BigInt = 14231298404585272594532066060599344450740257008513996153970
                                                  //| 899971372056700018822218864953933788923879079420310711587644150211699700767
                                                  //| 593695262105806913580874099120999137962091446298939490621265602973299812993
                                                  //| 353280080786018016198963164368358527870987981049739860173076849059948546305
                                                  //| 638750242099422705237772321221068286651538351814412901774483730558548684789
                                                  //| 301835095535756365293640520579320280640582692662984212912997792344073215212
                                                  //| 794918324658529625858602138298703723066700027097026231151718434577029702033
                                                  //| 113914124185756019161089322313591911461949819496413610939851229693846901547
                                                  //| 313666146285277729845013937641121272174010563779509584712714514458453609548
                                                  //| 541845269936873726241686449760901181641370608520134043384605225777920283586
                                                  //| 277686007926066414517139994909224656805320190744652249810799999679835446490
                                                  //| 095168499242202332709618129212473581589480596020616554134325535677258422770
                                                  //| 46801650480360517347218
                                                  //| Output exceeds cutoff limit.