java - 从 int 中删除所有奇数位的递归方法
问题描述
我在编写用于从 int 中删除任何奇数位的递归方法时遇到问题 - 例如:evenDigits(123456)
应该 return 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 一个。最后一位是 6,它的偶数,保存它,更新一个累加器 (=6) b。递归调用 12345
- 12345 - 最后一位是奇数 - 删除它,b。递归调用 1234
- 1234 - 最后一位是 4 - 它的偶数,保留它,更新累加器 6 -> 46 (在这里你应该考虑这种更新的数学公式)
……
最后 - 当你到达没有数字的点时停止,累加器将包含答案
祝你好运!
推荐阅读
- python - Python 有限状态机上的无效语法
- python - 使用 Edgetpu 编译器为 Tensorflow 编译时出错
- sql - 当 Oracle SQL 查询在 IN(...) 语句中有大量选择时不使用索引
- python - 计算黑色像素比
- java - 使用 JavaCompiler 和 URLClassLoader 编译和运行 Jade 代理
- javascript - 网页认证
- database - collection.save() 在 mongodb 中无法正常工作
- python - 使用 Amazon Cloudwatch 事件或 CloudTrail 将 AWS 配置日志获取到 S3
- swiftui - 在 SwiftUI 中制作动态、可编辑的简单对象列表的最简单方法是什么?
- xcode - 根据浅色/深色模式更改 iMessage 贴纸包资产?