Tag: 阶乘

使用递归对ktolin进行阶乘的Stackoverflow错误

这是我的代码这使输出控制台上的堆栈溢出错误30次 fun main(args:Array<String>){ var no:Int=Integer.parseInt(readLine())//read input from user and convert to Integer var ans:Int=calculateFact(no) //call function and store to ans variable println("Factorial of "+no+" is "+ans) //print result } fun calculateFact(no:Int):Int //function for recursion { if(no==0) { return 1 } return (no*calculateFact(no)) } 我不知道什么是错误解决PLZ

如何在Kotlin中使用BigDecimal和BigInteger实现斯特林公式?

我正在尝试做一个阶乘程序。 如果输入数字低于250 000,我使用尾递归函数来查找该数字的阶乘。 但是,如果输入数字超过250 000的价值,我尝试使用斯特林公式( )。 我想能够使用BigIntegers和BigDecimals,但是每当我尝试计算250 102时,我都会得到NaN(不是数字…错误)。 你能帮我么? 这是我在Kotlin的代码: import java.io.File import java.math.BigDecimal import java.math.BigInteger tailrec fun tail_recursion_factorial(n: BigInteger, factorialOfN: BigInteger = BigInteger.valueOf(2)): BigInteger { return when(n){ BigInteger.ZERO -> BigInteger.ONE BigInteger.ONE -> BigInteger.ONE BigInteger.valueOf(2) -> factorialOfN else -> tail_recursion_factorial(n.minus(BigInteger.ONE), n.times(factorialOfN)) } } // calculate approximate value of n! // using Stirling's approximation: fun Stirling_factorial(n: […]

在Kotlin中使用`for`循环的因子

有了java编程的经验,我开始学习Kotlin。 我正在玩的语言,发现我坚持找到一个阶乘使用循环kotlin。 我设法使用while循环来做到这一点。 import java.util.Scanner fun main(args: Array<String>){ val reader=Scanner(System.`in`) val x: Int = reader.nextInt() println(factorial(x)) } fun factorial(a: Int): Int{ var ans=1 var i: Int = a while(i>1){ ans*=i i– } return ans } 请帮我做一个for循环。 谢谢