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

         这周,一个同事在开发这样一个功能:把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;
          }

    原文作者:递归算法
    原文地址: https://blog.csdn.net/lzw190/article/details/8219691
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞