1

関数が実行される回数をカウントするためにカウントを使用していrefますが、参照を削除したい場合はどうなりますか?私はocamlの初心者です、アドバイスをください、これが私が得たものです:

let count =ref 0;;  
let rec addtive n=
if n<9 then count 
else(
     incr count;
     addtive(sum(digit(n)))
) ;;

# a 551515;;
- : int ref = {contents = 2}

でも私は

-: int = 2
4

2 に答える 2

3

!から値を抽出するには、then句にa を追加するだけrefです。

let count =ref 0;;   
let rec addtive n= 
  if n<9 then !count
  else(
    incr count;
    addtive(sum(digit(n)))  
  ) ;;
于 2013-01-11T09:24:00.850 に答える
0

カウントを 2 番目のパラメーターとして渡す必要があります (必要に応じてヘルパー メソッドを定義します)。

let additive n =
  let rec helper n count =
    if n<9 then count
    else helper (sum (digit n)) (count + 1)
  in
  helper n 0
于 2013-01-10T20:36:04.193 に答える