2014-02-08 85 views
1

我試圖寫計數n的最多M個除數(其中電流是除數的數目的函數除數和計數是迄今爲止的除數總數)ocaml的錯誤消息錯誤:解析錯誤:「在」預期後[結合](在[EXPR])

我得到錯誤錯誤:解析錯誤:「in」預計在[binding](在[expr]中)代碼的最後一行,但我不希望真的看不到「如何」成爲最後一行。我在這裏做錯了什麼?

(* Counts the number of divisors*) 
    let rec count_divisors (n: int) (m: int) (current: int) (count: int): int = 
     if count > m || current > n then count 
     else if (n mod current) = 0 then count_divisors n m (current+1) (count+1) 
     else (count_divisors n m (current+1) count);; 

回答

0

我想你使用其他函數中該功能(因爲它有這麼多的參數,其中,我希望只有一個參數 - 要計算其約數的數),對不對?

如果是這樣,請嘗試更改您的代碼如下:

let num_divisors n = 
    let rec count_divisors (n: int) (m: int) (current: int) (count: int): int = 
      if count > m || current > n then count 
      else if (n mod current) = 0 then count_divisors n m (current+1) (count+1) 
      else (count_divisors n m (current+1) count) 
    in count_divisors n n 1 0;;