首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

求递归讲解解决方案

2012-03-09 
求递归讲解publicclassRecTest{staticint[]valuesnewint[3]staticvoidprintArray(inti){if(i0)return

求递归讲解
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次方可以用系统函数 逆序输出字符串可以用循环)

热点排行