递归
递归是一种编程技巧,程序自己调用自己
递归的优势:能够更快地写出代码 复杂度很低
递归的劣势:特别消耗内存
凡是可以使用递归的程序都可以使用循环
但是能够使用循环的程序不一定可以使用递归
能够做到栈帧复用的递归程序就称之为尾递归
使用递归时一定要小心栈内存溢出
public class Test {
public static void main(String[] args) {
//定义计算的项数
int num = 50;
System.out.println("使用循环完成斐波那契数列");
long num1 = 1;
long num2 = 1;
long result = 0;
for(int i = 3;i<=num;i++) {
result = num1+num2;
num1 = num2;
num2 = result;
}
System.out.println("循环之后第50项的值是:"+result);
result = method(num,1,1);
System.out.println("递归之后第50项的值是:"+result);
}
//递归
public static long method(int num) {
if(num==1||num==2) {
return 1;
}
return method(num-1)+method(num-2);
}
//尾递归
public static long method(long num,long ret1,long ret2) {
if(num==1) {
return ret1;
}
return method(num-1,ret2,ret1+ret2);
}
}