累加思想与计数器思想

简介: 累加思想与计数器思想

1.累加思想:


1.1 原理


通过变量记录住每次变化的结果;通过循环的形式,进行累加动作。


note:


一般情况下,当循环次数明确的时候用for语句,当循环次数未知的时候用while语句。

由于累加思想是主要通过for循环语句实现的(当然用while语句也可以),为便于记忆,我个人习惯称“累加思想就是‘for语句’”。


1.2 举例


问题:实现1到100的整数和


思路:1)明确有两个变量:a、sum。a代表整数,sum用来记录住整数相加之和的变化结果


2)实现累加和,可以用for循环语句,也可以用while循环语句实现。由于变量a只在循环语句中使用,使用for循环语句更加节省内存空间。故本题使用for语句最合适。


代码实现:


class  ForTest
{
  public static void main(String[] args) 
  {
  /*此题最适合for语句。因为变量a在循环语句中用完,之外不需要再用,从而节省内存空间。*/
      int sum=0;  //声明变量sum并赋初值,用来记录每次相加的和
        for(int a=1;a<=100;a++)  //用for语句实现,这个累加的过程也就是累加思想
    {
      sum=sum+a;  
    }
    System.out.println("1到100的和为:"+sum);
  }
}

2.计数器思想:


2.1 原理


通过一个变量来记住数据的不断变化,也是通过循环完成的。


note:一般情况下,当循环次数明确的时候循环用for语句,当循环次数未知的时候循环用while语句。


由于计数器思想是主要通过for循环语句内嵌套if条件语句实现的,为便于记忆,我个人习惯称“计数器思想就是‘for(if)语句’”。


2.2 举例


问题:实现1到100之间9的倍数的个数,并输出


思路:1)需要2个变量:x、y;x代表一个整数变量,y用来记录计算结果的个数


2)用for(if)语句实现结果:先对1到100进行循环。在循环的过程中,定义条件。只对9的倍数进行操作。因为9的倍数不确定,只要符合条件,就通过一个变量y来记录住这个变化的次数。


代码实现:

class  ForTest 
{  
    public static void main(String[] args)   
    {  
        int y=0;         //y为记录9的倍数的个数  
        for(int x=1;x<=100;x++)  
        {  
          if(x%9==0)  
          {  
             System.out.println("1到100内9的倍数为:"+x); //输出所有100以内9的倍数的值  
             y++;  
          }  
        }  
        System.out.println("1到100内9的倍数的个数为:"+y);  
    }  
}  
目录
相关文章
|
1月前
|
算法
算法与数据结构之递推法
算法与数据结构之递推法
21 0
|
5月前
|
机器学习/深度学习 C语言
|
5月前
|
算法
数据结构和算法学习记录——时间复杂度的计算(嵌套循环、大O的渐进表示法、双重循环、常数循环、strchr、冒泡排序、二分查找、斐波那契数列递归)
数据结构和算法学习记录——时间复杂度的计算(嵌套循环、大O的渐进表示法、双重循环、常数循环、strchr、冒泡排序、二分查找、斐波那契数列递归)
444 1
|
5月前
|
存储 机器学习/深度学习 算法
数据结构和算法学习记录——空间复杂度的计算(冒泡排序、阶乘递归、斐波那契数列递归、常见复杂度对比、栈帧、栈溢出)
数据结构和算法学习记录——空间复杂度的计算(冒泡排序、阶乘递归、斐波那契数列递归、常见复杂度对比、栈帧、栈溢出)
46 0
|
6月前
|
存储 Python
处理随机元素来创建数列是一个涉及随机数生成和数列构造的过程
处理随机元素来创建数列是一个涉及随机数生成和数列构造的过程
58 0
|
机器学习/深度学习 算法 测试技术
C++算法:有向图计数优化版原理及实现
C++算法:有向图计数优化版原理及实现
|
算法
Shifting Stacks (递增思想特例化)
Shifting Stacks (递增思想特例化)
50 0
|
算法 测试技术 索引
【算法与数据结构】4 算法利器,详解循环不变量与复杂度分析
【算法与数据结构】4 算法利器,详解循环不变量与复杂度分析
193 0
|
前端开发 搜索推荐 算法
数据结构和算法基础之时间复杂度为O(n²)排序(偏向前端方向)
在实际项目开发中,不管是后端还是前端,最基本的操作就是数据的CRUD。换句话说,后端是根据某些条件组装数据,前端是拿着后端提供的数据,进行数据展示。但是不管在进行数据封装还是展示,其中在特定的场景下,需要根据某些条件,对数据进行排序。而在既定的现有框架下,都有现成的方法对数据进行排序处理。 但是,在开发中,有没有想过,这些排序底层是如何实现的,还有就是针对不同的数据,不同的排序是否在性能方面有不同的体现。
125 0
数据结构和算法基础之时间复杂度为O(n²)排序(偏向前端方向)
|
算法 Java
算法java快速排序的两种方法(单边循环、双边循环)
算法java快速排序的两种方法(单边循环、双边循环)
162 0