迭代与递归

8月 20th, 2012
Visited 2995 times, 1 so far today
0

Comments

递归:

递归就是在一个方法内部对自身的调用。

递归一定要给出一个明确的结束条件,即递归出口。

写下一个递归的小例子,分析下:

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(moth(5));

}

private static int moth(int i) {

// TODO Auto-generated method stub

if(i==1){

return 1;

}else{

return i*moth(i-1);

}

}

在这个例子中,main方法是程序的入口方法,在main方法中打印moth(5)(println可以将int类型的自动  转换为字符串) 在这个例子中  main方法将会调用moth方法,在调用的时候,如果i等于1 那么将会返回1 不再调用moth方法,如果i不等于1, 将会继续调用moth方法。下面画一个图将会详细的展示递归的运行过程。

 

在这个图中,我们可以看到程序首先会判断i是否等于1,如果不等于执行else,return i*moth(i-1); 注意了  在这里,调用了另一个方法,moth(i-1)  在调用另一方法时,首先要先调用该方法的方法体!所以这个程序会先运行 moth()方法,然后执行if判断是否为1,如果不为1,继续执行moth(i-1) 方法。继续执行moth()方法。直到return返回值为1时,当return返回后,执行 return i*moth(i-1);  直到i=5时,程序运行结束。得到的返回值为  return 1*2*3*4*5

 

 

 

迭代:

迭代就是利用变量的原值推算出变量的一个新值

如果是递归是不断的自己调用自己,那么迭代就是不断的用变量A调用变量B。

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println(moth(1));

}

 

private static int moth(int i) {

// TODO Auto-generated method stub

int s=1;

{

s=1;

for(i=1;i<6;i++)

s*=i;

return s;

}

}