递归与迭代对比
递归:代码精简,可读性好。浪费了空间,容易造成堆栈的溢出
迭代:代码不如递归简洁,可读性好。运行效率好,未造成额外的空间开销。
Recursion.java
package lab05;
//递归
public class Recursion {
public static int f(int n) {
if(n==1||n==2) {
return n;
}
else {
return f(n-1)+f(n-2);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
long start=System.currentTimeMillis();
System.out.println(Recursion.f(40));
long end=System.currentTimeMillis();
System.out.println(end-start);//计算花费的时间
}
}
Circulate.java
package lab05;
//循环迭代
public class Circulate {
public static int f(int n) {
if(n<1) {
throw new IllegalArgumentException(n+"不能小于1");
}
if(n==1||n==2) {
return n;
}
int one=2;//初始化为走到第二级台阶的走法
int two=1;//初始化为走到第一级台阶的走法
int sum=0;