我在做运动时有一个小问题。 我尝试递归计算字符串中的元音,但弹出此奇怪错误。 有人可以解释我为什么吗?
let rec nb_voyelle = function chaine ->
if chaine == "" then
0
else
let length = (String.length chaine)-1 in
let p_length = String.sub chaine 0 length in
match chaine.[length] with
| 'a' | 'e' | 'i' | 'o' | 'u' | 'y' -> 1 + nb_voyelle p_length
| _ -> 0 + nb_voyelle p_length
;;
答案 0 :(得分:2)
答案是我用“ ==”来比较我的最终情况下的字符串,这不是测试两个元素之间相等性的好方法。
同样地,发生了情况(String.sub“” 0 -1),并且函数未能引发此错误。