Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从整数中删除所有奇数的递归方法_Java_Recursion - Fatal编程技术网

Java 从整数中删除所有奇数的递归方法

Java 从整数中删除所有奇数的递归方法,java,recursion,Java,Recursion,我在编写一个递归方法时遇到了问题,该方法旨在从int中删除任何奇数-例如:evenDigits123456应该返回246。我的第一个想法是将int转换成一个字符串,并以这种方式循环,但问题明确指出不能使用字符串来解决它 谢谢你的帮助 编辑:到目前为止,这就是我所知道的,我不确定它是否正确,但我不知道如果最后一个数字是偶数该怎么办 public static int evenDigits(int n) if(n==2) { return 2; } if(n==1) { retu

我在编写一个递归方法时遇到了问题,该方法旨在从int中删除任何奇数-例如:evenDigits123456应该返回246。我的第一个想法是将int转换成一个字符串,并以这种方式循环,但问题明确指出不能使用字符串来解决它

谢谢你的帮助

编辑:到目前为止,这就是我所知道的,我不确定它是否正确,但我不知道如果最后一个数字是偶数该怎么办

public static int evenDigits(int n)

if(n==2)
{
    return 2;
}

if(n==1)
{
    return 0;
}

if((n%10)%2==1) //if the last digit is odd
{
    return evenDigits(n/10); //run it again without the last digit
}

由于这显然是家庭作业,我无法提供完整的解决方案,但这里有一些提示:

定义递归时,应该考虑何时停止停止条件。 如果您遵循@marksplace提供的提示,那么当递归到达没有数字的点时,您可能会停止

您应该考虑的另一件事是将迄今为止累积的结果存储在何处。您将通过递归传递它。它甚至在文献中被称为累加器。 因此,当您达到停止条件时,您将返回蓄能器。此外,考虑如何准确地更新累加器

下面是一个示例,说明它如何在不深入代码的情况下工作:

123456 A.最后一个数字是6,它的偶数,保留它,更新累加器=6 B12345的递归调用 12345-最后一位为奇数-将其删除, B1234的递归调用 1234-最后一个数字是4-它是偶数,保留它,更新累加器6->46在这里你应该考虑这样一个更新的数学公式

最后-到达没有数字的点时停止,累加器将包含答案


祝你好运

因为这显然是家庭作业,所以我无法提供完整的解决方案,不过这里有一些提示:

定义递归时,应该考虑何时停止停止条件。 如果您遵循@marksplace提供的提示,那么当递归到达没有数字的点时,您可能会停止

您应该考虑的另一件事是将迄今为止累积的结果存储在何处。您将通过递归传递它。它甚至在文献中被称为累加器。 因此,当您达到停止条件时,您将返回蓄能器。此外,考虑如何准确地更新累加器

下面是一个示例,说明它如何在不深入代码的情况下工作:

123456 A.最后一个数字是6,它的偶数,保留它,更新累加器=6 B12345的递归调用 12345-最后一位为奇数-将其删除, B1234的递归调用 1234-最后一个数字是4-它是偶数,保留它,更新累加器6->46在这里你应该考虑这样一个更新的数学公式

最后-到达没有数字的点时停止,累加器将包含答案


祝你好运

提示:123456%10是6,123456/10是12345。我想我理解了问题的这一部分,但我不知道如何递归。确定为什么可以使用递归,然后通过返回什么值来定义退出递归的基本条件??找出一个将int作为输入的函数,做一些简单的有意义的事情,然后需要再次执行相同的操作,这样它就可以使用不同的输入调用自己,最后它返回resultOne。您可以采用的方法是从一个较小的测试用例开始,比如12或23,然后尝试手动执行。仔细记下你所采取的步骤,然后尝试在算法中重现这些步骤。调试几次,以确保程序尽可能地遵循您执行的步骤。这通常会让你至少离得足够近,人们会帮你找出最后的部分来让它工作。但你确实需要努力。提示:123456%10是6,123456/10是12345。我想我理解了问题的这一部分,但我无法理解如何递归。确定为什么可以使用递归,然后通过返回什么值定义退出递归的基条件??找出一个将int作为输入的函数,做一些简单的有意义的事情,然后需要再次做同样的事情,这样它就可以用不同的输入调用自己,最后它返回resultOne。方法是从一个较小的测试用例开始,比如12或23,然后尝试手工做。仔细记下你所采取的步骤,然后尝试在算法中重现这些步骤。调试几次,以确保程序尽可能地遵循您执行的步骤。这通常会让你至少离得足够近,人们会帮你找出最后的部分来让它工作。但你确实需要努力。