第十六天的学习--递归、自制计算器

第十六天的学习

递归

A方法来调用B方法,这是很简单的操作,但是A方法调用A方法呢?

递归就是方法自己调用自己。

我们来写一个例子:

递归

一运行就报错了:

递归输出

这是栈溢出异常,内存不够了,非常严肃的一种问题,不太行。那一运行就报错的递归能干什么呢?

利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大的减少了程序的代码量。

递归的能力在于用有限的语句来定义对象的无限集合。

递归结构包括两个部分:

  • 递归头:这规定了什么时候不调用自身的方法。如果没有头,将陷入死循环。
  • 递归体:这规定了什么时候需要调用自身方法。

下面是一个例子,有关于阶乘这个概念:

递归1

很简单的思路,但一定要规定在什么时候结束递归,也就是给递归一个边界,这样才不会出问题。这里有一个重要的地方,那就是计算机运行这串代码的时候是比较麻烦的,也就是在数字比较少的时候才用递归,如果数字一大,那会耗费非常大的资源。

因为Java是栈机制,如果深度比较大,就比如这里的数字从5变成1000,计算机很可能就卡死报错了。所以,能不用递归就不用递归,小计算才用递归。

下面是自己做的一个计算器,要求是加减乘除可循环,但是我循环不了,老是报错,放弃循环之后,其他的亲测可用。

计算器1

计算器2

如果有大神看到了,麻烦指点一下,多谢。

以上所有学到的知识,除小部分我自行百度外,其余全是从B站UP遇见狂神说那里学习得来的。
非常良心的一位UP,Java课程全部免费,大家快去关注他!!!
对了,他还自建了一个学习网站,课程全部免费,链接就在这里,一起来学习吧!!!https://www.kuangstudy.com/

posted @ 2021-02-16 18:04  夏陌夏  阅读(69)  评论(0)    收藏  举报