我正在复习过去的考试,为即将到来的考试做准备,在完成了几个问题后,我遇到了一个我无法解决的问题。
它需要一个函数,该函数将接受一个字符串(或 [Char])并返回字符串中英语单词数量的 Int。它说 isWord 是一个假设函数,它接受一个字符串并根据单词是真还是假返回一个布尔值。单词必须排成一行,从左到右。给出的例子是“目录”。所以“cat”、“at”、“catalog”、“ogre”和“log”,函数应该返回 5。
wordsInString :: [Char] -> Int
wordsInString [] = 0
wordsInString x
| isWord (take 1 x)
| isWord (take 2 x)
保险杠只是显示了我的想法,显然它不会起作用。
这就是我开始的方式,我在想我可以使用该take
函数并一次增加每个字母,然后将起始字母向下移动直到[]
,但我不确定如何正确实现该递归。如果有人有任何想法或可以告诉我一个方法,那就太好了。