理解递归与循环

🚀 优质资源分享 🚀

学习路线指引(点击解锁)知识定位人群定位
🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

一、递归与循环的对比

  • 递归会带来大量的函数调用。这是不好的

  • 在计算环节特别大的前提下,递归就是不好的,因为递归是先调用,再计算。

    • 在大量计算的前提下可能会造成栈溢出(StackOverFlow)
    • 如下图:

  • 循环是先计算再调用,计算完后会调用的方法会从栈中抹去,最后将结果输出
  • 能不用递归就不用递归
  • 小计算可以考虑用递归,大计算就不考虑了

二、递归讲解

1、概念

  • A方法调用B方法,我们很容易理解
  • 递归就是:A方法调用A方法!就是自己调用自己

2、递归的用处

  • 递归策略只需要少量的程序就可以描述出解题过程所需要的多次重复计算,大大减少了程序的代码量
  • 递归的能力在于用有限的语句来定义对象的无限集合

3、递归结构包含两个部分

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

4、代码如下

5、递归的坏处

  • 递归会带来大量的函数调用。这是不好的
  • 在计算环节特别大的前提下,递归就是不好的,因为递归是先调用,再计算。循环是先计算再调用

三、循环讲解

1、while 循环

  • 基本结构
1 while( 布尔表达式 ){ 
2     //循环结构 
3 }
  • 只要布尔表达式为true,循环就会一直执行下去
  • 循环条件一直为true就会造成无限循环【死循环】,这是在正常程序下需要避免的
  • 少部分情况下需要循环一直执行下去。例如服务器的请求响应监听等

1 //例子:从1加到100求和
2 //代码主要部分
3 while(i<=100){
4 sum+=i;
5 i++;
6 }



### 2、do...while循环


* 对于while'语句而言,如果不满足条件,则不能进入循环,但有时候我们需要即使不满足条件的情况下,程序也要至少执行一次
* **`do.....while循环和while循环相似,不同的是:do....while循环至少会执行一次`**
* 语法结构




1 do{
2 //代码语句
3 }while(布尔表达式);

* while与do-while的区别



> 
> ## **while是先判断后执行。do-while是先执行后判断**
> 
> 
> ## do-while总是保证循环体至少会被循环一次!这是它们的主要区别
> 
> 
>
* ```
1 //例子:从1加到100求和
2  //代码主要部分
3  do{
4    sum+=i;
5    i++;
6  }while(i<=100); 

3、for 循环

  • 虽然所有的循环结构都可以使用while和do…while表示,但Java提供了另一种语句:for循环
  • for循环相较与其它二者更高效,执行速度快
  • 格式如下
1  for(初始化;布尔表达式;迭代式){
2      //代码语句
3  }

4、在Java5种引入了一种主要用于数组的增强型for循环

  • 主要是用来遍历数组集合
  • 格式如下:
 1  for(声明语句:表达式){
 2      //代码语句
 3  }
 4  ​
 5  ​
 6  //例子如下:
 7  int[] numbers={1,2,3,4,5};
 8  for(int x:numbers){
 9      System.out.println("数组中的元素为"+x)
10  }
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。

    • 其作用域限定在循环语句块,其值与此时数组元素的值相等。
  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

  • 另加:数组的静态与动态定义

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值