博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归基础思想
阅读量:7235 次
发布时间:2019-06-29

本文共 1058 字,大约阅读时间需要 3 分钟。

有个朋友刚刚在学习java,刚学了一个月,他虽然脑袋很大(不是针对所有人,只是针对他),但是说自己总是在解题的时候找不到思路。他在学习时遇到了几道关于递归的小题,今天简单聊一下关于递归的思路。

9953332-c42896a87ecde72b
image

上面是朋友发过来的图片,就这几道题简单谈一下递归从哪里入手。

先介绍一下递归,百度百科是这样解释的:程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

从上面的话我们可以看出,递归其实就是将大的问题分解成小的问题,并且这个子问题的解决方法和大问题的解决方法一样。

其中必须满足以下条件:

1.必要条件必须要有终止条件
2.子问题要更接近终止条件

以上图第一个例子说明一下:

编写代码,完成1+2+3+4+...+100输出结果:

这里以1加到5为例子

public static void main(String args[]) {        System.out.println(result(5));    }    public static int result(int i){        int sum;        if (i == 1) return 1;        else            sum = i + result(i - 1);            System.out.println("i是:"+i+"------sum是:"+sum);        return sum;    }

从代码来看是这样一个调用过程:

result(5)5+result(4)5+(4+result(3))5+(4+(3+result(2)))5+(4+(3+(2+result(1))))

展开成数字来看:

(5+(4+(3+(2+(1)))))(5+(4+(3+(2+1))))(5+(4+(3+3)))(5+(4+6))(5+10)

这时我们在回头看递归的满足条件:

条件一:终止数字1(️)
条件二:每次减1来接近终止数字(️)

转载地址:http://wwmfm.baihongyu.com/

你可能感兴趣的文章
Twenty Newsgroups Classification任务之二seq2sparse(3)
查看>>
教育单元测试mock框架优化之路(中)
查看>>
网易老司机:网络性能问题该怎样监控与定位?
查看>>
为什么LinkedIn放弃MySQL slowlog,转用基于网络层的慢查询分析器?
查看>>
何小鹏:跟李斌赌输了 将付一辆ES8顶配的购车款给对方
查看>>
OPPO R11继续升温,8月8日将推出巴萨定制机
查看>>
从主流厂商宣传语看中国CRM领域的发展
查看>>
腾讯动漫回应停止支付作者稿酬传闻:均会按时如数支付
查看>>
卫健委:保障病人就医需求 加强流感药品物资保障
查看>>
因无力偿还网贷 内蒙古一对夫妻贩卖亲生龙凤胎
查看>>
2018年深圳出口规模续称雄 新业态进出口倍增
查看>>
第二届EmTech China 峰会在京举行 畅谈科技创新未来
查看>>
证监会对6宗内幕交易案件作出行政处罚 涉及现代制药等
查看>>
张近东智慧零售大开发加码:2019年开店15000家
查看>>
西班牙一亚洲女子疑似被人从三楼推落 伤势严重
查看>>
学习Python编程语言-这28本有关Python书籍值得去了解
查看>>
刚刚,蚂蚁区块链喜提“世界互联网领先科技成果”
查看>>
后端工程师入门前端页面重构(一):口诀
查看>>
广州三本找Java实习经历
查看>>
初识 weex 系列(前端视角) - 基础完结
查看>>