本帖最后由 王清华0 于 2013-8-15 04:53 编辑
这个问题真心难啊。先旨声明,我没有做出来,以下只是思路,看能不能起到抛砖引玉的作用。
第一条:累加需要遍历嘛,不允许循环的话,只能想到迭代函数的方式,但是迭代函数最后的跳出也是需要判定的啊,又不能用if,所以这个想法作废。
第二条:然后想到了,可以用构造函数的例子来计数啊,只要建立一个数组不就好了。代码:- public class Test
- {
- public static void main(String args[])
- {
-
- int n = 100;//这里假设n=100。
- Inner[] in = new Inner[n];
- System.out.println("最终结果为:"+Inner.num);
- }
- }
- class Inner
- {
- static int num = 0;
- Inner()
- {
- num=num+(num+1);
- }
- }
复制代码 运行结果居然是0!!立刻想到:不对,java每一个类都必须new一遍才能执行构造函数。那么 又牵扯到遍历赋值了。还是没成功。
第三条:百度一下吧。。。找到了很多,但是大部分都是c++的语言写的。思路反正我是没有看懂几个。。。这里给你一个网页,你看看他的解答:
http://blog.csdn.net/yuucyf/article/details/6400601
他的第一种思路用到了乘法,我觉得违反了题目要求,第二种思路跟我的一样,但是c++的直接new了数组就调用了构造函数。不需要分别分配内存空间。第三种用到了模板元,c++学的太久,早就忘了,没看懂,也不知道java里面怎么实现,你看看吧,能够理解的话自己改一下。 |