我不知道出了什么问题,请指教。
写一个递归函数int ones(int x)
,
返回x的二进制表示中的1的数量。使函数的工作独立于int的大小(16,32,64位)。
import java.util.Scanner;
public class Recursion1 {
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
System.out.println("Please enter the desired binary number: ");
int input = sc.nextInt();
int ones(int x) {
int count = 0;
while(x!=0) {
if(x==1)
count++;
System.out.println("Number of ones is : "+ count);
}
}
}
}
答案 0 :(得分:0)
ones
方法必须在main
之外。然后它必须调用自身(根据定义,递归函数调用自身)。
它接收String
(文本),然后检查第一个字符是否为1.然后它将此值加到ones(rest of the string)
,其中“其余字符串”是所有字符但是首先。最后,你递归计算所有这些。
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
System.out.println("Please enter the desired binary number: ");
String input = sc.next();
System.out.println("Number of ones is: " + ones(input));
}
static int ones(String x) {
// check if first character is 1 or zero
char c = x.charAt(0);
int count = c == '1' ? 1 : 0;
// if it's the only character, return the resulst
if (x.length() == 1) {
return count;
}
// if there are more characters, call ones(rest of the string)
return count + ones(x.substring(1));
}
答案 1 :(得分:0)
您的问题陈述中存在不一致,您的函数<div class='parent'>
<h1 class='start'>START</h1>
<h2 class='in-between'>
THIS TEXT IS SUPPOSED TO GET `OVERFLOW` WHEN `.FINISH` REACHES THE POINT OF LEAVING THE `.PARENT` FREESPACE FREESPACE FREESPACE FREESPACE FREESPACE FREESPACE
</h2>
<h1 class='finish'>FINISH</h1>
</div>
无法使用&#34;独立于int(16,32,64位)&#34;的大小。 java int ones(int x)
是32位,因此要处理大于此值的int,您需要使用String或BigInteger。我在下面为BigInteger提供了一个案例。同样在你的问题陈述中,你要接受一个整数,而不是一个整数的二进制表示,你的函数是取这个整数而不是二进制表示。
int
答案 2 :(得分:0)
其他人指出了你的错误,并提出了一些想法。我只是想通过位操作给出另一个解决方案。
public class MyClass {
public static int ones(int x) {
if (x <= 1) return x;
return x % 2 + ones(x >> 1);
}
public static void main(String args[]) {
int x = 63;
System.out.println("Ones in " + x + " : " + ones(x));
}
}
打印出6
答案 3 :(得分:-1)
对于递归,您需要自己调用相同的函数,直到达到某个条件。一个流行的递归示例如下:
public static long factorial(int n) {
if (n == 1) {
return 1;
}
return n * factorial(n-1);
}
请注意此功能factorial( int n)
在n
减少到1
之前如何调用自身。