【发布时间】:2020-06-26 21:03:34
【问题描述】:
我在编写用于从 int 中删除任何奇数位的递归方法时遇到问题 - 例如:evenDigits(123456) 应该返回 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
}
【问题讨论】:
-
提示:
123456 % 10是 6,123456 / 10是 12345。 -
我想我掌握了这部分问题,但我无法理解如何递归地进行操作
-
确定为什么可以使用递归,然后定义基本条件以通过返回什么值来退出递归??
-
找出一个函数,它将你的 int 作为输入,做一些简单的有意义的事情,然后需要再次做同样的事情,所以它用不同的输入调用自己,最后它返回结果
-
解决此问题的一种方法是从较小的测试用例开始,例如“12”或“23”,然后尝试手动完成。仔细记录您采取的步骤,然后尝试在算法中重现这些步骤。调试几次以确保程序尽可能地遵循您采取的步骤。这通常会让你至少离得足够近,人们会帮助你找出最后的部分来让它工作。但你确实需要努力。