前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常用的算法-递归

常用的算法-递归

作者头像
全栈程序员站长
发布2021-12-23 12:43:56
3930
发布2021-12-23 12:43:56
举报
文章被收录于专栏:全栈程序员必看

        最近开始复习数据结构和算法的相关知识,以前学习数据结构的时候使用C语言实现其中的数据存储结构。已经学习Java有一年多了,总是忙于写代码,学习新知识,思考总是一瞬间的事,然而这样的境遇总是让我在学习Java软件开发的过程中遇到很多问题,为此牺牲了很多时间。

      突然决定启用51Blog来记录每一次尝试,探索,错误的历经。

      递归算法的核心在于:

     方法能够通过自身的调用得到执行,并且总会得到调用结束的出口。

     递归(recursion):神奇的算法

      递归编程的注意事项:       递归代码会精彩而且会很短,但却能够完成很复杂的工作;       大部分代码是用来对负责底层工作的递归方法进行支持。

    递归和迭代的区别:

    迭代:一种用循环来描述需要的重复进行的操作的编程方法。     递归:一种通过调用某个方法来描述需要重复进行的操作的编程方法,该方法的一个基本特  征是:它可以调用自身

代码语言:javascript
复制
iteration algorithm:  
 public static void writeStar(int n)  
        {  
 for(int i=1;i<n;i++)  
            {  
                System.out.print(” * “);  
            }  
        System.out.println();  
        }  
    recursion algorithm:  
 public static void writeStar(int n)  
        {  
 if(n==0)  
            {  
 //base case  
                System.out.println();  
            }  
 else 
            {  
 //recursion case  
                System.out.print(” * “);  
                writeStar(n-1);  
            }  
        } 

 递归结构:   基本情况(base case) 递归情况(recursion case)   基本情况:     一种简单到不需要递归调用就可以直接解决的情况   递归情况:    一种需要把整个问题转化成为一个相同种类,比较简单的,而且可以通过递归调用   来解决问题的情况  函数调用用的是:栈内存  主函数的运行用的是:堆内存

代码语言:javascript
复制
整数的幂运算:  
 public static int pow(int x,int y)  
        {  
 if(y==0)  
            {  
 //base case  
 return 1;  
            }  
 else 
            {  
 //recursion case  
 return x*pow(x,y-1);  
            }  
        }  
        递归解决方法过程:  
        pow(3,5)  =  3*pow(3,4)  
        |   pow(3,4)  =  3*pow(3,3)  
        |   |   pow(3,3)  =  3*pow(3,2)  
        |   |   |   pow(3,2)  =  3*pow(3,1)  
        |   |   |   |   pow(3,1)  =  3*pow(3,0)  
        |   |   |   |   |   pow(3,0)  =  1 
        |   |   |   |   pow(3,1)  =  3*1  =  3 
        |   |   |   pow(3,2)  =  3*3  =  9 
        |   |   pow(3,3)  =  3*9  =  27 
        |   pow(3,4)  =  3*27  =  81 
        pow(3,5)  =  3*81  =  243 

当然递归对于问题的理解和提炼要求是比较高的。

我们使用递归解决的问题:

1.在数据结构中的非线性存储结构中的树,二叉树的前序遍历,中序遍历,后序遍历等问题的解决中就使用了递归算法,这样使解决问题的编码很方便。

2.遍历指定目录下的所有文件

3.二分法排序等等

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年8月17日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档