日期:2014-05-20 浏览次数:20583 次
#include <stdio.h> int count(int num); int i=0; int j=0; int k=0; void main() { int sum=count(1); printf("%d",sum); } int count(int num) { j=i+num; i=num; if(k<30) { k++; return count(j); } else { return j; } }
public class Demo { long i=0; long j=0; int k=0; public long conut(final long a) { j=i+a; i=a; System.out.println(i+" "+j+" "+k); if(k<30) { ++k; return conut(conut(j)); }else { return j; } } public static void main(String[] arg) { Demo demo=new Demo(); long num=demo.conut(1L); System.out.println(num); } }
return conut(conut(j)); //多了个conut
------解决方案--------------------
return count(count(j));应改为return count(j);
不然每次递归时就会产生两次调用。K=30时,回退了两次,由于K是全局的,所以调用或回退时值不会变化了。
------解决方案--------------------
经典的肺部尼奇啊……