递归算法
来源:互联网 发布:过程控制软件 编辑:程序博客网 时间: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;
}
小编在项目中处理递归时,由于要进行拼接字符串,一直思考不过来弯,索性直接上手,直接干,出了错,再说。突然发现直接干,遇到错误,解决错误。一步一步的调试,终于解决了难题。而且看到用到了递归的解决办法,看着自己的代码就是爽啊。
递归的特点:一直要用到自身,反复使用自己。一定有一个边界点,来结束自己。递归算法美观,可读性高。
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- 递归算法
- HDU 1171(dp46)
- iOS 程序 main 函数之前发生了什么
- 夏令营day11总结
- 微服务架构 (四): 提升微服务分布式远程调用的可靠性与性能; Time Out 与 Circuit Breaker
- 四种节点流和Buffered的使用
- 递归算法
- 洗牌(shuffle)问题详解
- BootStrap 教程 之 插件(04)
- HDU 2048 (dp46)
- Java中的文件和流相关知识
- 文件系统中数据读取的详细过程
- 《实战Java...》读书笔记2
- LeetCode 23. Merge k Sorted Lists
- java API——引用类型对象对Object的继承及源码分析