2016-08-12 115 views
0

我一直在试图编写一个程序,打印出一个阶乘,但实际上没有使用递归。问题的阶乘函数

下面是代码

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

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

+0

由于是代码甚至不为我编(的同时,“块”缩进太多) – Sehnsucht

+0

你的样品没有编译 – Petr

+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 

你被宣布while范围内result变量并返回它外面。但是你的代码是不正确的,我花了修改,在这里我就是这样做的自由:

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

没有减少n这是一个很好的无限循环;) – Sehnsucht

+0

即使减少n结果只使用最后两个数字;这不是一个因子。 – Vandroiy

+0

哎呀,现在编辑它,对不起,一定错过了,谢谢@Sehnsucht – Luiso