Java 递归方法构造

Java 递归方法构造,java,eclipse,recursion,Java,Eclipse,Recursion,我的问题是: 编写一个名为binaryToDecimal的递归方法。该方法应将二进制位字符串转换为以10为基数的整数。从我们的RecursionExamples类中调用对象的示例如下 answer = example.binaryToDecimal("101111") 返回的整数是47 我需要帮助来解决这个问题。我知道这将是一个if-else循环,但如何进行却让我感到困惑。(这是Eclipse环境)。< P>如果你想递归地解决它,考虑二进制字符串,你可以把它转换成一个整数,根据最右边的数字加上

我的问题是:

编写一个名为
binaryToDecimal
的递归方法。该方法应将二进制位字符串转换为以10为基数的整数。从我们的
RecursionExamples
类中调用对象的示例如下

answer = example.binaryToDecimal("101111")
返回的整数是47


我需要帮助来解决这个问题。我知道这将是一个if-else循环,但如何进行却让我感到困惑。(这是Eclipse环境)。

< P>如果你想递归地解决它,考虑二进制字符串,你可以把它转换成一个整数,根据最右边的数字加上1或0,根据这个字符串的其余部分加上这个函数的2倍。< /P> 它在伪代码中看起来像这样

// input is an integer of 1's and 0's
def f( int binaryString ):
    int lastDigit = binaryString % 10 // Get the last digit
    int restOfString = binaryString / 10 // Remove the last digit

    return lastDigit + (2 * f(restOfString)) // add the last digit to twice f 
                                             // applied to the rest of the string

你还必须检查字符串的其余部分是否被作为结尾条件,但这是该方法的基本逻辑。

< P>如果你想递归地解决它,考虑二进制字符串,你可以把它转换成一个整数,根据最右边的数字加1或0,基于字符串的其余部分添加2次此函数

它在伪代码中看起来像这样

// input is an integer of 1's and 0's
def f( int binaryString ):
    int lastDigit = binaryString % 10 // Get the last digit
    int restOfString = binaryString / 10 // Remove the last digit

    return lastDigit + (2 * f(restOfString)) // add the last digit to twice f 
                                             // applied to the rest of the string

您还必须检查字符串的其余部分何时作为结束条件缩减为零,但这是该方法的基本逻辑。

您想要做的很简单:

  • 想想退出条件——它能处理的最原子的字符串是什么。如果您的方法在空字符串上返回适当的错误,则会获得额外的点数
  • 想想如何使用递归函数。如果忽略用于提取lastDigit和restOfString的代码,Reese已经发布了一个很好的解决方案 下面是一个更像Java的伪代码,没有透露太多内容:

        public int binToDec(String binary)
        {
            if (end_conditions) return int
            int lastDigit = Integer.process
            String restOfString = binary.substring
    
            return lastDigit + 2* binToDec(restOfString);
        }  
    

    您想做的很简单:

  • 想想退出条件——它能处理的最原子的字符串是什么。如果您的方法在空字符串上返回适当的错误,则会获得额外的点数
  • 想想如何使用递归函数。如果忽略用于提取lastDigit和restOfString的代码,Reese已经发布了一个很好的解决方案 下面是一个更像Java的伪代码,没有透露太多内容:

        public int binToDec(String binary)
        {
            if (end_conditions) return int
            int lastDigit = Integer.process
            String restOfString = binary.substring
    
            return lastDigit + 2* binToDec(restOfString);
        }  
    

    你应该展示你迄今为止所做的努力。此外,“我知道这将是一个for-else循环…”如果需要递归,可能不会。您应该展示您迄今为止所做的尝试。另外,“我知道这将是一个for-else循环…”如果它需要递归的话,可能不会。怎么会这样呢?这是您试图编写的方法,只是它是伪代码,而不是java,并且您希望输入字符串不是整数,所以可以将其转换为数字,或者使用
    string
    substring
    方法来实现相同的语义目标。我将简要介绍我的想法。我可以看到这是如何工作的,但它面临着范围问题,这是怎么回事?这是您试图编写的方法,只是它是伪代码,而不是java,并且您希望输入字符串不是整数,所以可以将其转换为数字,或者使用
    string
    substring
    方法来实现相同的语义目标。我将简要介绍我的想法。我可以看到这是如何工作的,但它有很多问题。谢谢你们两位的帮助。这些递归方法非常感谢你们两位的帮助。这些递归方法bug meI将指出,为家庭作业问题提供有效的解决方案是一种糟糕的形式。然后我看了看代码::-)我想指出的是,为家庭作业问题提供有效的解决方案是一种糟糕的形式。然后我看了看代码::-)