C# 回文递归:简化条件三元表达式

C# 回文递归:简化条件三元表达式,c#,recursion,palindrome,conditional-operator,simplify,C#,Recursion,Palindrome,Conditional Operator,Simplify,我需要实现一个递归方法来检查输入是否是回文。我能够在一行中完成这项工作,它可以工作,但我不确定这是否可读。我还不断收到一条消息“简化条件三元表达式”,但我不确定如何简化 这是我的代码: private static bool checkIfPalindrome(string i_InputToCheck, int i_StartIndex, int i_EndIndex) { return (i_StartIndex >= i_EndIndex) ? true :

我需要实现一个递归方法来检查输入是否是回文。我能够在一行中完成这项工作,它可以工作,但我不确定这是否可读。我还不断收到一条消息“简化条件三元表达式”,但我不确定如何简化 这是我的代码:

private static bool checkIfPalindrome(string i_InputToCheck, int i_StartIndex, int i_EndIndex)
    {
        return (i_StartIndex >= i_EndIndex) ? true : checkIfPalindrome(i_InputToCheck, i_StartIndex + 1, i_EndIndex - 1) && (i_InputToCheck[i_StartIndex] == i_InputToCheck[i_EndIndex]);
    }
所提示的简化是因为您正在测试布尔表达式,然后不必要地检查并返回它

if(expression==true)
等同于
if(expression)

返回表达式?true:false
返回表达式

这对眼睛来说当然不容易,但我想这是一个学校练习

这是多么可读啊

首先,命名约定:去掉标识符中不必要的/无信息的部分。例如,参数不需要以
i
开头(可能表示“输入”?)。这里没有传达任何信息,这会增加噪音。这对可读性有很大影响

逻辑本身也可以被分离。您得到的警告提示您可以简化条件-当您的条件包含布尔文字时,情况总是如此

然而,最重要的是,将表达式分成多行有利于可读性

我还将交换两个次要条件,以便首先测试当前字符,然后进一步递归(仅当当前测试的两个字符相等时!):

此代码依赖于
&
的正确优先级高于
|
。有些人喜欢使用更多的括号来明确此运算符的优先级:

private static bool IsPalindrome(string input, int start, int end) {
    return (start >= end) ||
        (
            input[start] == input[end] &&
            IsPalindrome(input, start + 1, end - 1)
        );
}

我们只允许使用1份退货声明请澄清您的问题。三元表达式简化需要帮助吗?谢谢!!在我的课程中,命名约定是必须的,以便能够更好地阅读长代码。
private static bool IsPalindrome(string input, int start, int end) {
    return (start >= end) ||
        input[start] == input[end] &&
        IsPalindrome(input, start + 1, end - 1);
}
private static bool IsPalindrome(string input, int start, int end) {
    return (start >= end) ||
        (
            input[start] == input[end] &&
            IsPalindrome(input, start + 1, end - 1)
        );
}