递归:实际上就是自己调用自己,递归是一种算法!
* 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144
* 第三位上的数字=第二位+第一位
* 2= 1+1
* 第四位=第三位+第二位
* 3= 2+1
* 第五位=第四位+第三位
* 5= 3+2
* 第N位=第N-1位+第N-2位
*
递的前提条件:方法的定义
//举例:1-5之间的累加和
public class N {
public static int add(int number) {
if(number==1) { //最后一项是什么
return 1; //最后一项的结果是什么
}else {
return add(number-1)+number; // //自己调用自己, 求1~5积(阶乘n!), 将"+" 换为"*" 最后一项*前几项的阶乘
}
}
public static void main(String[] args) {
System.out.println(add(5));
}
}
递归缺点: 效率低,主要体现在有调用顺序和执行顺序, 而循环只有执行顺序
public class N {
public static int xunhuan(int number) { //利用循环求和,这种效率高
int sum=0; //求乘积的,将int sum=1 sum*=i
for(int i=1;i<=number;i++) {
sum+=i;
}
return sum;
}
public static void main(String[] args) {
System.out.println(xunhuan(4));
}
}
/**斐波那契数列
* 1 2 3 4 5 6 7 8 9 10 11 12
* 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144
* 第三位上的数字=第二位+第一位
* 2= 1+1
* 第四位=第三位+第二位
* 3= 2+1
* 第五位=第四位+第三位
* 5= 3+2
* 第N位=第N-1位+第N-2位
*
*/
public static int fibonacci (int index){//第几位
if(index==2||index==1){ //位置1, 2 上的数字都是1
return 1;
}else{
return fibonacci(index-1)+fibonacci(index-2);
}
}
}