方法递归
递归:方法自身调用自身,很耗费栈内存,能不用尽量不用。
递归必须有结束条件,没有结束条件一定会发生栈内存溢出错误,即使结束条件正确也可能发生栈内存溢出错误,因为递归的太深
递归实例:
public class Lianxi14
{
public static void main(String []args){
System.out.println("begin");
dosome();
System.out.println("over");
}
//以下代码可以被重复调用,重复调用dosome方法,调用一次就分配相应的内存空间
public static void dosome(){
System.out.println("begin");
dosome();//重复执行这行代码
System.out.println("over");
}
}//一直输出"begin"
不使用递归,计算1-N的和
public class Lianxi14//不使用递归,计算1-N的和
{
public static void main(String []args){
int n=10;
int value=sum(n);
System.out.println(value);
}
public static int sum(int n){
int result = 0;
for (int i=0;i <n ;i++ )
{
result=result + i;
}
return result;
}
}
使用递归计算1-N的和
public class Lianxi14//使用递归,计算1-N的和
{
public static void main(String []args){
int n=4;
int value=sum(n);
System.out.println(value);
}
public static int sum(int n){
if (n==1)
{
return 1;//n=1,递归结束
}
return n+sum(n-1);//连续返回,递归
}
}
/*4+sum(3) 4+3+2+1
3+sum(2) 3+2+1
2+sum(1) 2+1
n=1 返回 1*/
使用递归计算N的阶乘
public class Lianxi14//使用递归,计算N的阶乘
{
public static void main(String []args){
int n=4;
int value=mult(n);
System.out.println(value);
}
public static int mult(int n){
if (n==1)
{
return 1;//结束递归
}
return n*mult(n-1);
}
}