递归算法转换成非递归算法

2014-11-24 10:29:10 · 作者: · 浏览: 0

这周,一个同事在开发这样一个功能:把java对象转换成JSON格式的字符串,我知道有开源的jar包,但是他说那个不能处理他目前的需要,所以需要开发一套转换方法。看了他画的流程图,实在看不懂,就给他提了一些建议,重新画了流程图,并采用递归的方式来实现。并另外给他提了一个建议,看看能否把递归方法用非递归的方式来实现。下面给出一个简单的列子,作为递归算法使用非递归算法来实现的一个思路。

使用java语言实现的求一个整数的阶乘:

1、递归算法求阶乘

static int factorial(int n){
if(n>1){
return n*factorial(n -1);
} else if(n==1){
return 1;
}
return 0;
}


2、非递归算法求阶乘
static int factorial2(int n){
Stack st = new Stack();
st.push(n);
int temp;
int total = 1;
while((temp = st.peek())!= 1) {
total *= temp;
st.pop();
st.push(temp -1);
}
return total;
}