gpt4 book ai didi

java - 递归查找二进制数的程序

转载 作者:行者123 更新时间:2023-12-01 16:47:38 25 4
gpt4 key购买 nike

我一直在研究一种递归解决方案来评估数字是否为二进制。然而我的解决方案总是返回 false,而且我似乎无法得到正确的逻辑。我的代码如下:

public class Convert{
public static boolean isBinaryNumber(int binary){
int temp = 0;
boolean status = false;

if(binary==0 || binary==1) {
status = true;
return status;
}
else {
temp = binary%10;

if(temp == 1 || temp == 0) {
binary = binary/10;
isBinaryNumber(binary);
}
else {
status = false;
return status;
}
}
return status;
}

public static void main(String a[]){
System.out.println("Is 1000111 binary? :"+ isBinaryNumber(1000111));
System.out.println("Is 10300111 binary? :"+ isBinaryNumber(10300111));
}
}

最佳答案

    if(temp == 1 || temp == 0) {
binary = binary/10;
isBinaryNumber(binary);
}

应该考虑递归调用的返回值,例如

    if(temp == 1 || temp == 0) {
binary = binary/10;
status = isBinaryNumber(binary);
}

请注意,整个代码可以压缩很多,例如,您可以一致地删除状态变量或早期返回语句。

如果您保留状态并明确涵盖所有情况,我会将初始化删除为 false,以便编译器能够指出缺少赋值的分支。在这种情况下,这可能会指向错误位置。

通过进一步简化,代码可以压缩为

    public static boolean isBinaryNumber(int binary) {
return binary == 1 || binary == 0 || binary >= 10 &&
isBinaryNunber(binary / 10) && isBinaryNumber(binary % 10)
}

关于java - 递归查找二进制数的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47023856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com