当前位置: 首页 > 面试题库 >

请逐步解释递归

夏谦
2023-03-14
问题内容

请分步说明递归;

public class TestClass {

    private static void printit(int i) {
        if (i == 1) {
            return;
        }
        System.out.println(i);
        printit(i / 2);
        printit(i / 2);
    }

    public static void main(String args[]) {
        int i = 8;
        printit(i);
    }
}

问题答案:

如果您使用的是IDE,则可以使用调试器,亲眼看看发生了什么。

无论如何,让我们尝试一下,当调用递归方法时会发生什么:您使用8(printit(8);)调用该方法:

  1. System.out.println(8); -> 8
  2. printit(8 /2 ); ->以8/2 = 4再次调用方法
  3. System.out.println(4); -> 4
  4. printit(4 /2 ); >以4/2 = 2再次调用方法
  5. System.out.println(2); -> 2
  6. printit(2 /2 ); >用2/2 = 1再次调用方法
  7. return;->继续上一个通话,(printit(4 /2);
  8. printit(2 /2 ); >用2/2 = 1再次调用方法
  9. return;->继续上一个通话,(printit(4 /2);
  10. 方法完成,继续上一个调用(printit(8 /2);
  11. printit(4 /2 ); >以4/2 = 2再次调用方法
  12. System.out.println(2); -> 2
  13. printit(2/2);我们已经知道的呼叫不会产生任何结果。
  14. 现在我们在第一次调用一遍,printit(8);,呼吁printit(8/2);
  15. System.out.println(4); -> 4
  16. 16等…


 类似资料:
  • 我实现了一个非常简单的递归方法,将两个数相乘在一起。我很难理解递归的基本知识。 有没有人能向我解释(如果可能的话,逐行解释)这段代码是如何工作的?我尤其感到困惑的是,基大小写被写为返回0,而实际上返回的是实际的乘法。 谢谢你的帮助

  • 问题内容: 我只是将eclipse放在笔记本电脑上,当我使用Step Into调试工具时,它不仅使我进入了代码的下一部分。一个例子是,如果我调用数组列表,它将带我进入数组列表类,并通过所有必需的代码进入 但是,在我的桌面上,它只会带我进入下一段代码。我做: 如果我单击该按钮(从我的桌面进入),则 hello world 将出现在控制台中。 相比之下,如果我在笔记本电脑上“步入” ,它将首先拉起Pr

  • 本文向大家介绍请解释一下TreeMap?相关面试题,主要包含被问及请解释一下TreeMap?时的应答技巧和注意事项,需要的朋友参考一下 考察点:key-value集合 TreeMap是一个有序的key-value集合,基于红黑树(Red-Black tree)的 NavigableMap实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator进行排序,具体取决于使用的

  • 问题内容: 测试类,主要方法: 由于以下原因,我无法获得此信息: B类 继承自 A类 (公共成员),并且无法查看/继承私有功能。因此,在 B类中 ,我们可以调用 talk() 。 //因为它是由父类继承的。 现在,在 talk()* 方法中,由于在 类B中 定义了 sayIt() ,因此可以调用 sayIt() , * __ 我希望将呼叫 B.sayIt() 时进行 this.sayIt() 被执

  • 本文向大家介绍详解XMLHttpRequest(一)同步请求和异步请求,包括了详解XMLHttpRequest(一)同步请求和异步请求的使用技巧和注意事项,需要的朋友参考一下 XMLHttpRequest 让发送一个HTTP请求变得非常容易。你只需要简单的创建一个请求对象实例,打开一个URL,然后发送这个请求。当传输完毕后,结果的HTTP状态以及返回的响应内容也可以从请求对象中获取。  通过XML

  • @Required注解应用于bean属性的setter方法,它表明影响的bean属性在配置时必须放在XML配置文件中。 十九、请举例说明@Qualifier 注解? 如果在xml中定义了一种类型的多个bean,同时在java注解中又想把其中一个bean对象作为属性,那么此时可以使用@Qualifier加@Autowired来达到这一目的,若不加@Qualifier这个注解,在运行时会出现“ No