在下面的函数中,lp的形式与例子[0,a; 3,r; 7,p; 2,a]一样。OCaml中的游程长度解码
函数run_length_decode取lp并返回上例[r; r; r; p; p; p; p; p; p; p; a; a]。
let rec run_length_decode lp = match (List.hd lp) with [] ->[]
| [0] -> rle_decode (List.tl (List.tl lp))
| _ -> (List.hd [List.tl]):: run_length_decode (List.hd (List.hd lp) -1)::(List.hd [List.tl])::(List.tl [List.tl])
它说,有一些错误(List.hd(List.hd LP)-1),我想搭头和减量和(List.hd [List.tl])::(List.tl [List.tl])我想将列表的尾部连接到递减的头部和递归。 (1)如果lp为空则返回空终止;(2)如果lp的头部为0,则跳至lp的下一部分;以及(3)如果lp的头部较大然后打印要显示的字母并递归调用具有修改的lp的RUNLENGTHDECODE,其中lp的头部递减并与lp的尾部连接。上面的代码不起作用。什么是问题?怎么修?
你说代码不起作用。究竟是什么问题?请注意,本地名称必须以OCaml中的小写字母开头。你实际上不能有一个名为'RUNLENGTHDECODE'的函数。如果你坚持大量的帽子,你可以命名为'rUNLENGTHDECODE'。就我个人而言,我会将它命名为'run_length_decode'。 –
您可能想看看https://ocaml.org/learn/tutorials/99problems.html#Decodearunlengthencodedlistmedium – ChriS