日期:2014-05-20 浏览次数:20780 次
#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是全局的,所以调用或回退时值不会变化了。
------解决方案--------------------
经典的肺部尼奇啊……