我们以一个简单的例子开始讨论
Example01.java
public class Example01{
//使用递归实现 求 1 ~ n 的和
public static int getSum(int n)
{
if(n == 1)
{
//满足条件,结束递归
System.out.println("n = " + n);
return 1;
}
int temp = getSum(n - 1);
return temp + n;
}
public static void main (String[] arge)
{
//调用递归方法,获取 1 ~ n 的和
int sum = getSum(4);
//打印结果
System.out.println("sum = " + sum);
}
}
我们可以知道调用顺序如下图:
根据图片我们可以明显知道它的调用顺序,于是提出一个问题,在int temp = getSum(n - 1);
之前或之后输出一下 n 的值,所得到的运行结果会不会恰好相反,于是我们做了一下尝试;
在int temp = getSum(n - 1);
之前输出 n 的值
public class Example01{
//使用递归实现 求 1 ~ n 的和
public static int getSum(int n)
{
if(n == 1)
{
//满足条件,结束递归
System.out.println("n = " + n);
return 1;
}
System.out.println("n = " + n);
int temp = getSum(n - 1);
return temp + n;
}
public static void main (String[] arge)
{
//调用递归方法,获取 1 ~ n 的和
int sum = getSum(4);
//打印结果
System.out.println("sum = " + sum);
}
}
OUTPUT:
n = 4 ,n = 3 ,n = 2 ,n = 1
sum = 10
在int temp = getSum(n - 1);
之后输出 n 的值
public class Example01{
//使用递归实现 求 1 ~ n 的和
public static int getSum(int n)
{
if(n == 1)
{
//满足条件,结束递归
System.out.println("n = " + n);
return 1;
}
int temp = getSum(n - 1);
System.out.println("n = " + n);
return temp + n;
}
public static void main (String[] arge)
{
//调用递归方法,获取 1 ~ n 的和
int sum = getSum(4);
//打印结果
System.out.println("sum = " + sum);
}
}
OUTPUT:
n = 1
n = 2 ,n = 3 ,n = 4 ,sum = 10