当前位置: 首页 > 知识库问答 >
问题:

return语句在实现查找十的幂的方法时给出了意外的结果

司徒兴思
2023-03-14

我正在解决的问题,我们给一个整数,我们必须返回10的最大幂,它小于或等于给定int n的值。我试图解决它,但运行时间不是预期的。

  public int powerofTen(int n){
    int x;
    if(n>0){
    x =  1 + powerofTen(n/10);
    }else{
    return 0;
    }
    return x;
    }

如果我将最后一个return x,语句替换为return(int)Math。pow(10,x-1)要获得正确答案,显示的值为0。此外,如果我尝试使用返回x-1而不是int x,那么它也会显示0。

a间隙输出:如果n=100

with返回x值为3。

使用返回x-1值为0。

返回(int)Math.pow(10, x-1)值为0。

共有2个答案

欧阳永宁
2023-03-14

即使它已经被回复了,这样在递归算法中更容易看到要做的步骤:

>

  • 大小写:任何小于10的数返回0作为10的最大指数

    递归任务:将n/10的最大指数加1

    一些代码

    public int powerofTen(int n){
        if(n<10)
            return 1;
        else
            return 10*powerofTen(n/10);
    }
    

  • 阴福
    2023-03-14

    这与递归无关,错误不在递归代码中。问题是您需要返回函数,例如:

    对于输入100,输入数字3,可能返回(int)Math。pow(10,x-1)。如果用(int)数学替换返回x。pow(10,x-1)那么递归调用中的结果将是错误的。例如,您将使用输入100调用函数,它将使用输入10调用函数,以此类推,但您希望使用输入10调用函数返回到外部调用值1。如果放置返回x-1(或(int)数学。pow(10,x-1))而不是返回x,那么在递归中,输入10的结果是0而不是1,因此输入100的结果也是0。

    错误是合乎逻辑的,为了解决问题,您需要找到指数,例如输入100的数字3,然后返回(函数外部)(int)Math。pow(10,x-1)

     类似资料:
    • 我试图使用hashlib对字节数组进行散列,但是我无法使散列与我期望的匹配(通过在线SHA256函数确认答案)。 我是这样做的: 在执行哈希之前,我打印出输入数据的十六进制摘要: 我做错了什么?

    • 问题内容: 我不知道以下行为, 以上语句的输出如下: 假 str1 == str2是 为什么会这样呢?为什么输出不是这样的: str1 == str2是 str1 == str2是 问题答案: 的优先级高于。 所以你的代码: 将有效地 因此,您得到了。 在情况2 您已显式使用花括号与(是)进行比较,然后附加值。

    • 问题内容: 请解释为什么异常出现在第一个程序中而不是第二个程序中。 1)在read方法中没有return语句 2)在读取方法中使用return语句 问题答案: 最终不应该在内部使用分支语句(return,goto),因为这样的语句的执行会使在最终之前执行的其他指令无效。 在Java语言规范说:如果try块的执行任何其他原因[R突然结束,那么finally块被执行,然后有一个选择: 如果finall

    • 我在试着测试我正在学习的一门课。我想运行一个打印报表,以员工的月薪乘以12,给我年薪,然后加10%。除了最后一部分,我已经把所有的工作都做好了 线程“main”Java.util.unknownformatconversionexception:Conversion='r'在Java.util.formatter$formatspecier.Conversion(formatter.Java:26

    • 问题内容: 当调用Surveymonkey api时 ,服务器需要使用它 作为json数据来完成我的请求。虽然它返回的数据是必需的,但它没有返回我认为我要求的其他URL。有谁知道为什么这不会给我这个? 编辑 https://developer.surveymonkey.com/mashery/get_collector_list, 这是我尝试拨打的电话,如果有帮助 问题答案: 正如评论中指出的那样

    • 问题1: 为什么下面的代码在没有return语句的情况下进行编译? 注意:如果在while之后添加return,则会得到。 问题2: 另一方面,为什么下面的代码会编译, 即使下面的不是。