递归算法

来源:互联网 发布:过程控制软件 编辑:程序博客网 时间:2024/06/07 16:16

     最近小编在做项目中的时候,用到了递归算法。使用递归算法解决了查找父节点的字节点的问题。我们的需求:把每个节点都给找出来。由于小编底子还很薄,从看这幅图到有了解决方案就经历了种种困难。最终想到了递归,这个算法。

      小编接触递归算法是从C语言开始的。下面一起来讨论下递归算法吧。

    如果我们要处理一些比较复杂的,并且不断和自身有关的循环,不放想一想递归算法。比如:求出阶乘。n! = n * (n-1) * (n-2) * ...* 1(n>0)

下面是小编对这个阶乘递归算法的理解:出现了一个函数,在这个函数里需要反复调用它自己,在这个阶乘里。每次的计算都需要有n来乘以n--。所以我们可以声明一个函数。

 public int returnint (int n)
   {
     return n* returnint(n--);
    }

但是此时我们运行这个程序的话,将会陷入无限递归的过程,所以我们一定要让它结束,也就是说,在一次调用这个函数时,它让他执行调用自身的这行代码,而且结束这次调用。根据我们的条件n>0,所以我们就有了结束这个调用的代码

 public int returnint (int n)
    {
         if (n>0)
             return n*returnint(n--);
         else
            return 1;
     }

这样的话,就找到一个结束递归的点,那么程序就不会无限递归了。这样这个程序就完成了。

小编在项目中处理递归时,由于要进行拼接字符串,一直思考不过来弯,索性直接上手,直接干,出了错,再说。突然发现直接干,遇到错误,解决错误。一步一步的调试,终于解决了难题。而且看到用到了递归的解决办法,看着自己的代码就是爽啊。

递归的特点:一直要用到自身,反复使用自己。一定有一个边界点,来结束自己。递归算法美观,可读性高。


0 0