Java中的简单递归方法

3

我在编写Java的递归方法时遇到了一些麻烦,像斐波那契数列、最大公约数等简单的问题我可以解决。 现在我需要编写一个递归方法将十进制数转换为二进制,并以字符串形式返回结果。我不确定是否需要在递归调用中将字符串结果返回回来,或者有没有更有效的方法来编写它。

public static String toBinary(int decimal) {...}

有人可以介绍一些简单的步骤来完成这个吗?递归对我来说还有些模糊。

1个回答

3
你可能应该做的是在每次递归中将 十进制数 除以2:
  • 如果输入是偶数 → 最后一位是0,将输入除以2并再次调用toBinary
  • 如果输入是奇数 → 最后一位是1,将输入减1,然后除以2,再次调用toBinary
然后尝试找出何时停止递归并如何将位附加到字符串中。

谢谢!我会尝试一下,看看哪种方法有效。将字符串结果作为另一个参数接受并附加到字符串中,这样做是否有问题? - Cole Dooley
@ColeDooley 这种做法并没有错,但同时可能不是最理想的。可以让该方法返回输入二进制数的 String 表示。你可以从底部开始尝试 - 如果输入 0,会发生什么,如果输入 1,会发生什么,如果输入 2 和 3,又会发生什么,然后可以通过递归调用来处理字符串拼接。 - luk2302
太好了,我会尝试一下并看看我能得到什么。 - Cole Dooley
使用整数除法时,在奇数情况下无需在除之前减一。 - pjs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接