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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值