求递归讲解
public class RecTest {
static int[] values = new int[3];
static void printArray(int i) {
if (i == 0) return;
else printArray(i - 1);
System.out.println( "[ " + (i - 1) + "] = " + values[i - 1]);
}
public static void main(String args[]) {
for (int i = 0; i < 3; i++) values[i] = i;
printArray(3);
}
}
[0] = 0
[1] = 1
[2] = 2
本人数据结构学的不是太好,求哪为给讲解一下上面递归代码是怎么实现下面的输出结果的,请说明的详细些,谢谢!
[解决办法]
public class RecTest {
static int[] values = new int[3];
static void printArray(int i) {
if (i == 0) return;//当i=0的时候返回,因为此时数组的下标为-1,所以没有输出
else printArray(i - 1);
System.out.println( "[ " + (i - 1) + "] = " + values[i - 1]);
//当i不等于0的时候i-1,直到i=0,从i等于0,1,2,3开始算,输出数组的值
}
public static void main(String args[]) {
for (int i = 0; i < 3; i++) values[i] = i;
printArray(3);
}
}
[解决办法]
遇到递归记住2点就行了
1)递归程序有2个出口 一个是退出递归的条件 另一个是继续递归
2)递归调用后会返回调用他的函数
写递归的时候找到退出条件就好写了
看递归的时候画画图 记住返回就行了
自己写写 N! x的y次方 逆序输出字符串 慢慢就能理解了
(x的y次方可以用系统函数 逆序输出字符串可以用循环)