f#beginner尝试在没有反向或内置方法的情况下检查f#中的字符串是否为palidrome。这是我到目前为止所提出的,我觉得我离我只有一点距离。目前尚未编译。
let ispalidrome (str:string) =
let strlength = str.Length
let result = for i in 0 .. < strlength / 2 do
if str.[0] <> strlength then false
else true
result
//unit test
ispalidrome "noon"
答案 0 :(得分:4)
您的代码的主要问题是,在F#中,您无法从for
循环中断。这意味着您需要使用递归来编写迭代,而不是使用for
循环(F#对命令式编程有一些支持,但不是对命令式break
,continue
和{{1 }})。
最简单的方法是编写一个内部return
函数,该函数获取我们当前正在查看的索引。如果这是在单词的一半之后,我们返回loop
。否则,我们将true
与str.[i]
进行比较,并递归调用函数:
str.[str.Length-1-i]