递归重点是要找到界限,知道什么地方退出,不然容易造成死循环。
什么都不说直接来代码:
//传入起始终止位置递归
public long total(long i,long j,long sum){
if(i<j){
sum=sum+total(i+1,j-1,i+j);
}else{
if(i==j)
sum=sum+i;
else
sum=sum+0;
}
return sum;
}
//之传入中止位置递归
public long add (long n) {
if(n>0) {
return (n + add(n-1));
} else {
return 0;
}
}
//循环求和
public long sum(){
long sum=0;
for(long i=0;i<=1000;i++){
sum=sum+i;
}
return sum;
}
输出:
long start=System.currentTimeMillis();
System.out.println(re.total(0,1000,0));
long end=System.currentTimeMillis();
System.out.println("递归消耗时间:"+(end-start));
long start1=System.currentTimeMillis();
System.out.println(re.sum());
long end1=System.currentTimeMillis();
System.out.println("循环消耗时间:"+(end1-start1));
System.out.println(re.add(1000));