JAVA基础知识,2--堆栈和递归的操作

2015-07-26 18:16:21

/**

*该应用程序对堆栈和递归方法进行实例操作:

*1、堆栈操作:先进后出,

*2、递归方法:直接或者调用自己的方法;

*@author lhm

*Email:912547587@qq.com

*/

public class TestStack{

//属性声明

private String[] item;

//top = 0时,堆栈为空;

private int top=0;

/**

*无参构造方法

*默认声明数组4个

*/

public TestStack(){

item = new String[4];

}

/**

*有参构造方法

*@param i 数组个数

*/

public TestStack(int i){

item = new String[i];

}

/**

* 堆栈的添加操作

* @param s 所添加的字符串

*/

public void push(String s){

item[top]=s;

top++;

}

/**

* 堆栈的删除操作

*堆栈从栈顶开始进行删除

*/

public void pop(){

item[top-1]=null;

top--;

}

/**

* 返回栈中的元素值;

* 返回值按先进后出的顺序

*/

public void getInfo(){

for(int j=top-1;j>=0;j--){

System.out.println(item[j]);

}

}

//返回堆栈的大小;

public int size(){

return top;

}

/**

*使用递归求解n!

*@param n

*/

public int Recursion1(int n){

if(n==0)

return 1;

else

return n*Recursion1(n-1);

}

public int Recursion2(int n){

return n==0? 1:n*Recursion2(n-1);

}

public static void main(String[] args){

TestStack ts = new TestStack();

//依次添加字符串;

ts.push("1");

ts.push("2");

ts.push("3");

ts.push("4");

System.out.println("----------");

System.out.println("打印堆栈的字符串:");

ts.getInfo();

//ts.pop();

System.out.println("----------");

System.out.println("输出3的阶乘是:");

System.out.println(ts.Recursion1(3));

System.out.println("输出5的阶乘是:");

System.out.println(ts.Recursion2(5));

}

}

程序结果:

----------

打印堆栈的字符串:

4

3

2

1

----------

输出3的阶乘是:

6

输出5的阶乘是:

120

依次输入:1,2,3,4,结果出来:4,3,2,1

n的阶乘通过递归的方法进行计算!!