Java 从整数中删除所有奇数的递归方法
我在编写一个递归方法时遇到了问题,该方法旨在从int中删除任何奇数-例如:evenDigits123456应该返回246。我的第一个想法是将int转换成一个字符串,并以这种方式循环,但问题明确指出不能使用字符串来解决它 谢谢你的帮助 编辑:到目前为止,这就是我所知道的,我不确定它是否正确,但我不知道如果最后一个数字是偶数该怎么办Java 从整数中删除所有奇数的递归方法,java,recursion,Java,Recursion,我在编写一个递归方法时遇到了问题,该方法旨在从int中删除任何奇数-例如:evenDigits123456应该返回246。我的第一个想法是将int转换成一个字符串,并以这种方式循环,但问题明确指出不能使用字符串来解决它 谢谢你的帮助 编辑:到目前为止,这就是我所知道的,我不确定它是否正确,但我不知道如果最后一个数字是偶数该怎么办 public static int evenDigits(int n) if(n==2) { return 2; } if(n==1) { retu
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,然后尝试手工做。仔细记下你所采取的步骤,然后尝试在算法中重现这些步骤。调试几次,以确保程序尽可能地遵循您执行的步骤。这通常会让你至少离得足够近,人们会帮你找出最后的部分来让它工作。但你确实需要努力。