阶乘函数问题

时间:2016-08-12 17:03:43

标签: f# factorial

我一直在尝试编写一个程序,它打印出一个阶乘而不实际使用递归。

这是代码

let factorial x = 
   let mutable n = x
       while n > 0 do
             let result = n*(n-1)
             n <- (n-1)
       result

问题在于,当我尝试运行代码时,它告诉我预期结果是一个单位,而输入显然是一个整数,这显然会导致错误。但是,我检查了所有变量,编译器将它们解释为整数,那么问题是什么

1 个答案:

答案 0 :(得分:3)

您的代码存在以下几个问题,您必须牢记f#中的缩进非常重要,因为您希望代码应该是:

let factorial x =
   let mutable n = x
   let mutable result = 1
   while n > 0 do
       result <- n * (n-1)
       n <- (n - 1)
   result

您在result范围内声明while变量并将其返回到它之外。但是你的代码不正确,我冒昧地修改它,这就是我所做的:

let factorial x =
    let mutable n = x
    let mutable result = 1
    while n >= 1 do
       result <- result * n
       n <- (n - 1)
    result
相关问题