首页 > 其他分享 >理解递归与循环

理解递归与循环

时间:2022-10-04 21:13:34浏览次数:42  
标签:语句 do 调用 递归 理解 while 循环

一、递归与循环的对比

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

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

    • 在大量计算的前提下可能会造成栈溢出(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  }
  • 声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。

    • 其作用域限定在循环语句块,其值与此时数组元素的值相等。

  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

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

标签:语句,do,调用,递归,理解,while,循环
From: https://www.cnblogs.com/yzbg/p/16754482.html

相关文章

  • 循环语句(while&for)
    循环语句while语法结构while(表达式)循环语句://continue#include<stdio.h>intmain(){inti=1;while(i<=10){if(i==5)continue;//继续(跳过本次......
  • 分支和循环
    什么是语句?  c语言中有一个分号隔开的就是一条语句,比如:printf("我爱打游戏");1+2;一.分支语句(选择结构)A.if语句(判断真假,真则执行,假不执行)(1)单分支语句注意:在C语言中,0表示......
  • 位运算的理解
    day5:位运算的理解!!!前提注意!!!!!!有无符号数!!!无符号数没有符号的数,写出来多少就是多少有符号数最高符号位代表正负数:1(负数)0(正数)位运算:计算机现在可以存储所有的数字(......
  • 循环结构
    1.while循环2.do...while循环3.for循环1.while循环的结构while(布尔表达式){}例子:1.输出1-100publicstaticvoidmain(String[]args){//输出1~100......
  • Spring入门(一)--相关概念理解
    1、什么是Spring?Spring框架是一个开源的Java平台,它最初是由RodJohnson编写的,并且于2003年6月首次在Apache2.0许可下发布。Spring是轻量级的框架,其基础版本只有2MB......
  • 对for循环打印三角形的学习理解
    1.for循环这个嵌套其实就是一个套娃形式,一开始无法理解一列一行的样式怎么呈现,后来想通了,其实代码不管怎么敲,想让它呈现出什么样式,它的本质就是一行一行的去输出,只不过可......
  • Python 教程之控制流(4)Python 中的循环技术
    Python在各种顺序容器中通过某些内置函数支持各种循环技术。这些方法主要在竞争性编程中非常有用,在各种需要特定技术的项目中也非常有用,这些项目需要使用循环来维护代码的......
  • Python 教程之控制流(8)在 Python 中使用带有 For 循环的 Else 条件语句
    在python中使用带有for循环的else条件语句在大多数编程语言(C/C++、Java等)中,else语句的使用受到if条件语句的限制。但是Python也允许我们在for循环中使用else条件......
  • 本周回顾:列表、字典、集合、元祖、垃圾回收机制、循环、输出格式
    本周回顾重点大概列表字典集合元祖垃圾回收机制循环输出格式目录本周回顾重点大概本周回顾详细列表字典集合元祖垃圾回收机制循环and分支结构本周回顾详细列表......
  • 函数的递归调用
    介绍:一个函数在函数体内又调用了本身,称之为递归调用例子:  ①当在函数main内调用test(4)时,执行判断if,由于4>2,执行test(n-1),此时n=4,则传值为test(3)②继续执行判断if......