请分步说明递归;
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);
)调用该方法:
System.out.println(8);
-> 8printit(8 /2 );
->以8/2 = 4再次调用方法System.out.println(4);
-> 4printit(4 /2 );
>以4/2 = 2再次调用方法System.out.println(2);
-> 2printit(2 /2 );
>用2/2 = 1再次调用方法return;
->继续上一个通话,(printit(4 /2);
)printit(2 /2 );
>用2/2 = 1再次调用方法return;
->继续上一个通话,(printit(4 /2);
)printit(8 /2);
)printit(4 /2 );
>以4/2 = 2再次调用方法System.out.println(2);
-> 2printit(2/2);
我们已经知道的呼叫不会产生任何结果。printit(8);
,呼吁printit(8/2);
System.out.println(4);
-> 4我实现了一个非常简单的递归方法,将两个数相乘在一起。我很难理解递归的基本知识。 有没有人能向我解释(如果可能的话,逐行解释)这段代码是如何工作的?我尤其感到困惑的是,基大小写被写为返回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