用一个无出口的递归函数测测你的JVM的Stack深度

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://xxlcube.blog.csdn.net/article/details/8199707
private int count = 1;
	public void fun()  {
		count++;
		fun();
	}


@Test
	public void test() {
		try {
			fun();
		} catch (Throwable e) {
			System.out.println(count);
			e.printStackTrace();
		}
	}

OK

11378
java.lang.StackOverflowError
	at jvm.TestStack.fun(TestStack.java:13)
	at jvm.TestStack.fun(TestStack.java:14)
	at jvm.TestStack.fun(TestStack.java:14)
	at jvm.TestStack.fun(TestStack.java:14)
	at jvm.TestStack.fun(TestStack.java:14)

展开阅读全文

测测你的算法设计能力

09-24

请写出下面两题的C++实现:rnProblem A:Euclid's Game(欧几里德游戏)rnrn题目的大意为:在 一块板上一开始写有两个不相等的正整数。两个玩家交替写数字,每一次,当前玩家都必须在板上写出任意两个板上数字的差,而且这个数字必须是新的,也就是 说,不能与板上任何一个已有的数字相同。当玩家再也写不出新数字时,他就输了。假设有A、B两个玩家,A先写,B后写。对于给定的两个数字,写程序判断是 A赢还是B赢。rnrn  提示:A赢还是B赢的关键是找出能写在板上的数字的个数,如果是奇数个数字可写,则A赢, 如果是偶数个,则B赢。能写在板上的数字个数刚好可以用欧几里德算法(GCD)得到,假设开始数板上的两个数字为M和N,且M>N,则能写在板上的 数字个数=M/GCD(M,N),因此,只需要判断该数字的奇数还是偶数即可。(算法略) rnrnrnProblem B:Locker doors(带锁的门)rnrn题目大意:在 走廊上有n个带锁的门,从1到n依次编号。最初所有的门都是关着的。我们从门前经过n次,每一次都从1号门开始。在第i次经过时(i=1,2,..., n)我们改变i的整数倍号锁的状态:也就是如果门是关的,就打开它;如果门是打开的,就关上它。举例来说,第一次经过后,所有的门都是打开的;第二次经过 后,偶数门是关着的,奇数门是开着的;以此类推,在最后一次经过后,有多少门是开着的。rnrn提示:门的状态只有两 种,没经过一次,状态就会发生变化。如果一道门经过奇数次,那么结果状态和原始状态就会不一样,而经过偶数次则不会发生变化。因此问题的关键就是找出那些 经过奇数次的门有多少道。很幸运,那些门的编号正好是整数i的完全平方数即1,4,9,16,...,因此只需要找出这样的数字有多少个即可。(算法略) rn 论坛

没有更多推荐了,返回首页