f#函数用于在不使用内置方法的情况下检查字符串是否为回文结构

时间:2015-02-14 20:34:12

标签: string f#

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"

1 个答案:

答案 0 :(得分:4)

您的代码的主要问题是,在F#中,您无法从for循环中断。这意味着您需要使用递归来编写迭代,而不是使用for循环(F#对命令式编程有一些支持,但不是对命令式breakcontinue和{{1 }})。

最简单的方法是编写一个内部return函数,该函数获取我们当前正在查看的索引。如果这是在单词的一半之后,我们返回loop。否则,我们将truestr.[i]进行比较,并递归调用函数:

str.[str.Length-1-i]