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

在递归中使用除法[重复]

陶鸿畴
2023-03-14

我有以下程序

public static int doSomething(int num){
    if(Math.abs(num) > 9){
        return (1 + doSomething( num / 10));
    }
    else{
        return 1;
    }
}
public static void main(String[] args){
    System.out.println(doSomething(333));
}

我是这样理解的。如果数字是333。333/10给我33。自从33

我不明白为什么它打印3作为答案。

我是java新手,所以仍在努力理解基础知识。

我不相信这个问题是重复的。作为java的初学者,我的问题要简单得多。我相信问题是使用javascript而不是java。

共有2个答案

子车凌龙
2023-03-14

递归不在< code>1 33上,而只在< code>33上,所以它是:

doSomething(333)
= 1 + doSomething(33)
= 1 + 1 + doSomething(3)
= 1 + 1 + 1
= 3
陆文博
2023-03-14

看,如果<code>Math.abs(num),doSomething()将返回什么

doSomething(333) => 1 + doSomething(33) // 33 not less than 9
                 => 1 + (1 + doSomething(3)) // now 3 is less than 9
                 => 1 + (1 + {1})
                 => 3
 类似资料:
  • 问题内容: 我正在研究一种方法,以递归方式删除ArrayList中元素的重复项。但是我遇到了一个问题,我的方法有效并删除了一些元素,但不是所有重复项。 这是我的输入: 这是输出: 而我的方法: 我知道我只是删除了所述值的最后一个元素,然后迭代到下一个元素。我想知道如何更改此设置以删除所有重复的元素。另外,我的输出的一部分使我感到困惑,其中有三个值“ 400”,但输出中只显示一个。 谢谢您的帮助。

  • 我得到了三个整数操作: A-将3添加到number B-将数字 C加倍-交换number 的最后两位数字我应该编写算法来检查我是否可以在n步中使用操作A、B、C制作k素数。最后,我必须打印我用来制作k素数的操作序列。让我们假设我们有函数: 当数字为素数时,函数ifprime返回true,否则返回false。 代码: 我的问题是,我不知道如何记住正确的路径,然后打印出来。

  • 我需要返回带有删除的所有重复元素的链表的头部。我理解这个问题的逻辑,但我在使用递归时变得困惑。 如果我在If条件之前调用函数RemoveDuplicates(head.next);很好用。但是,如果我交换语句的顺序(rest所有内容都完全相同),如下所示: 代码无法正确解决像'1->1->1->1'这样的测试用例。在后一种情况下,我得到的输出是'1->1'。 我真的想要一些关于我如何更好地理解递归

  • 问题内容: 我在数据库中存储了一组依赖项。我正在寻找直接或间接依赖于当前对象的所有对象。由于对象可以依赖零个或多个其他对象,因此完全可以合理地认为对象1被对象9两次依赖(9依赖于4和5,这两个都依赖于1)。我想获取不依赖复制的所有依赖于当前对象的对象的列表。 如果存在循环,这将变得更加复杂。没有循环,一个人可以使用DISTINCT,尽管多次经过长链仅在末尾剔除它们仍然是一个问题。但是,对于循环,重

  • 所以我有一个链接列表,我希望能够删除一个数字的第一次出现, 我正在尝试使用递归,但不幸的是,我最终只能删除列表的头部 我有三个不同的类,一个用于末尾的空列表,另一个类声明这个方法和实际的列表。

  • 我目前正在开发一个随机迷宫生成器,它将迷宫存储在一个名为< code>grid的二维数组中。这将随后用于生成一个真实的3D迷宫,用户可以在其中穿行。 在做了一些研究之后,我试图使用递归除法算法创建这个迷宫生成器,但是由于迷宫格式的性质,这对我来说并不是真的有效。 据我所知,递归分裂方法并不将壁视为细胞。 例如,我的网格如下所示: 我想在这里说的是,我试图创建的网格将像这样表示: 其中“w”是墙,“