这周,一个同事在开发这样一个功能:把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<Integer> st = new Stack<Integer>();
st.push(n);
int temp;
int total = 1;
while((temp = st.peek())!= 1) {
total *= temp;
st.pop();
st.push(temp -1);
}
return total;
}