特征:1、调用自己
2、调用自身解决更小的问题
3、在足够简单的问题层次,不需要调用,可以直接返回结果
//1+2+...+num
import java.io.*;
public class triangleApp {
static int num;
public static void main(String[] args) throws IOException{
System.out.println("Input a number");
num=getInt();
System.out.println(triangle(num));
}
public static int triangle(int n){
if(n==1) //基值情况,终止条件
return 1;
else
return triangle(n-1)+n;//return triangle(n-1)*n;
}
public static int getInt() throws IOException{
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
String s=br.readLine();
return Integer.parseInt(String.valueOf(s));
}
}
递归的销量:
每次调用,都会回到程序的开始处,参数等会存储到内存中的栈,所以比起while循环的方法,递归方式效率较低。
在大数量的数据时,销量会更低,尽量不要使用。递归只是简化了设计思路。