递归:
先从经典的斐波拉契数列开始:
public static void main(String[] args) {
for(int i=1;i<10;i++){
System.out.println(fibonacci(i));
}
}
/**
* 递归求斐波拉契数列
* @param i 第i个斐波拉契数列
* @return 第i个斐波拉契数列的值
*/
public static int fibonacci(int i){
if(i==1||i==2) return 1;
else return fibonacci(i-1)+fibonacci(i-2);
}
迭代:
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
System.out.println(fibonacci(i));
}
}
/**
* 递归求斐波拉契数列
*
* @param i 第i个斐波拉契数列
* @return 第i个斐波拉契数列的值
*/
public static int fibonacci(int i) {
int temp1 = 1;//前一个值
int temp2 = 1;//后一个值
int result = 0;//结果值
for (int m = 1; m <= i; m++) {
if (m == 1 || m == 2) result = 1;
else {
result = temp1 + temp2;
temp1 = temp2;
temp2 = result;
}
}
return result;
}
以上是实现斐波拉契数列的两种方式,分别称作递归与迭代,由代码不难看出,递归和迭代的实现原理可以抽象描述如下: