精华内容
下载资源
问答
  • 由以下while构成的循环,循环体执行次数是( )。  int k=0;  while ( k= -1 ) k++; A)无限次 B)一次也不执行 C)执行一次 D)有语法错,不能执行
  • 三层循环执行次数计算过程

    千次阅读 2019-10-05 12:19:41
    algs里分析ThreeSum算法的执行时间时用到了三层循环执行次数,文章里只给了结论没有计算过程。不知道原理,只知道结果,不符合我的学习习惯,所以我用自己的方法尝试计算。下面是示例代码: for (int i = 0; i <...

    algs里分析ThreeSum算法的执行时间时用到了三层循环的执行次数,文章里只给了结论没有计算过程。不知道原理,只知道结果,不符合我的学习习惯,所以我用自己的方法尝试计算。下面是示例代码:

    for (int i = 0; i < N; ++i) {
    	for (int j = i + 1; j < N; ++j) {
    		for (int k = j + 1 ; k < N; ++k) {
    			// do something
    		}
    	}
    } 
    

    显而易见,最外层的循环的执行次数是NN次,第二层循环次数是个等差数列:N1,N2,N3,...,3,2,1,0N-1, N-2, N-3, ..., 3, 2, 1, 0,所以第二层循环的执行次数是N(N1)2\frac{N(N-1)}{2}。第三层循环次数就不是那么直观了,可以先把i和j的值带入具体的值来分别计算第三层的循环次数,然后再分析下规律。

    i=0,j[1,N1]i=0, j\in[1, N-1]

    i j 第三层的循环次数
    0 1 N-2
    0 2 N-3
    0 3 N-4
    0 N-3 2
    0 N-2 1
    0 N-1 0

    i=1,j[2,N1]i=1, j\in[2, N-1]

    i j 第三层的循环次数
    1 2 N-3
    1 3 N-4
    1 4 N-5
    1 N-3 2
    1 N-2 1
    1 N-1 0

    i=2,j[3,N1]i=2, j\in[3, N-1]

    i j 第三层的循环次数
    2 3 N-4
    2 4 N-5
    2 5 N-6
    2 N-3 2
    2 N-2 1
    2 N-1 0

    i=N4,j[N3,N1]i=N-4, j\in[N-3, N-1]

    i j 第三层的循环次数
    N-4 N-3 2
    N-4 N-2 1
    N-4 N-1 0

    i=N3,j[N2,N1]i=N-3, j\in[N-2, N-1]

    i j 第三层的循环次数
    N-3 N-2 1
    N-3 N-1 0

    i=N2,j[N1,N1]i=N-2, j\in[N-1, N-1]

    i j 第三层的循环次数
    N-2 N-1 0

    可以得出第三层循环的循环次数是与i相关的等差数列。

    i 第三层的循环次数等差数列 第三层循环的循环次数和
    0 N-2, N-3, N-4, N-5, N-6, N-7, …, 2, 1, 0 (N2)(N1)2\frac{(N-2)(N-1)}{2}
    1 N-3, N-4, N-5, N-6, N-7, …, 2, 1, 0 (N3)(N2)2\frac{(N-3)(N-2)}{2}
    2 N-4, N-5, N-6, N-7, …, 2, 1, 0 (N4)(N3)2\frac{(N-4)(N-3)}{2}
    N-4 2, 1, 0 3
    N-3 1, 0 1
    N-2 0 0

    由等差数列求和公式f(n)=n2+n2f(n)=\frac{n^2+n}{2}可得第三层循环的循环次数和sum(i)=(N2i)2+(N2i)2,i[0,N2]sum(i)=\frac{(N-2-i)^2+(N-2-i)}{2},i\in[0, N-2],于是第三层循环的循环次数总和i=0N2sum(i)\displaystyle \sum ^{N-2}_{i=0}sum(i)
    =i=0N2(N2i)2+(N2i)2=\displaystyle \sum ^{N-2}_{i=0}\frac{(N-2-i)^2+(N-2-i)}{2}
    =(N2)2+(N2)2+(N3)2+(N3)2+(N4)2+(N4)2+...+(2)2+(2)2+(1)2+(1)2+(0)2+(0)2=\frac{(N-2)^2+(N-2)}{2}+\frac{(N-3)^2+(N-3)}{2}+\frac{(N-4)^2+(N-4)}{2}+...+\frac{(2)^2+(2)}{2}+\frac{(1)^2+(1)}{2}+\frac{(0)^2+(0)}{2}
    =(N2)2+(N3)2+(N4)2+...+(2)2+(1)2+(0)2+(N2)+(N3)+(N4)+...+2+1+02=\frac{(N-2)^2+(N-3)^2+(N-4)^2+...+(2)^2+(1)^2+(0)^2+(N-2)+(N-3)+(N-4)+...+2+1+0}{2}

    平方和公式k=1nk2=n(n+1)(2n+1)6\displaystyle \sum ^{n}_{k=1}k^2=\frac{n(n+1)(2n+1)}{6}和等差数列求和公式f(n)=n2+n2f(n)=\frac{n^2+n}{2},所以
    (N2)2+(N3)2+(N4)2+...+(2)2+(1)2+(0)2+(N2)+(N3)+(N4)+...+2+1+02\frac{(N-2)^2+(N-3)^2+(N-4)^2+...+(2)^2+(1)^2+(0)^2+(N-2)+(N-3)+(N-4)+...+2+1+0}{2}
    =(N2)(N2+1)(2(N2)+1)6+(N2)2+(N2)22=\frac{\frac{(N-2)(N-2+1)(2(N-2)+1)}{6}+\frac{(N-2)^2+(N-2)}{2}}{2}
    为了方便计算,代入N-2=a
    (N2)(N2+1)(2(N2)+1)6+(N2)2+(N2)22\frac{\frac{(N-2)(N-2+1)(2(N-2)+1)}{6}+\frac{(N-2)^2+(N-2)}{2}}{2}
    =a(a+1)(2a+1)6+a2+a22=\frac{\frac{a(a+1)(2a+1)}{6}+\frac{a^2+a}{2}}{2}
    =a(a+1)(2a+1)+3a(a+1)62=\frac{\frac{a(a+1)(2a+1)+3a(a+1)}{6}}{2}
    =(a+1)(2a2+a+3a)62=\frac{\frac{(a+1)(2a^2+a+3a)}{6}}{2}
    =a(a+1)(a+2)6=\frac{a(a+1)(a+2)}{6}
    再代入a=N-2
    =a(a+1)(a+2)6=\frac{a(a+1)(a+2)}{6}
    =(N2)(N1)N6=\frac{(N-2)(N-1)N}{6}
    所以
    第三层循环的循环次数总和i=0N2sum(i)=(N2)(N1)N6\displaystyle \sum ^{N-2}_{i=0}sum(i)=\frac{(N-2)(N-1)N}{6}

    展开全文
  • 条件表达式的执行次数总是比循环体执行次数多一次 B.循环体执行次数总是比条件表达式执行次数多一次 C.条件表达式的执行次数循环体执行次数一样 D.条件表达式的执行次数循环体执行次数无关 D while是先...

    A.条件表达式的执行次数总是比循环体的执行次数多一次
    B.循环体的执行次数总是比条件表达式执行次数多一次
    C.条件表达式的执行次数与循环体的执行次数一样
    D.条件表达式的执行次数与循环体的执行次数无关

    D
    while是先对条件语句判断,表达式结果为真,后执行循环体:而do while语句是先执行循环体再判断条件,如果不符合直接跳出,至少会执行一次 循环。

    例外:
    可能一次都没执行条件,可能执行相同的次数
    do {
    if()
    break;
    // continue;
    }while();

    展开全文
  • //终止循环体,在保留aid最后一次值的基础上,程序从这个位置重新开始运行。 for(aid=91322;aid;aid++){ q=bili.inputav(aid,page); j1++; System.out.println(aid+"连续扫描"+j1+"次"+"搜索到了"+...
  • C# 四种循环体的使用与区别

    千次阅读 多人点赞 2021-06-19 17:56:35
    循环在代码中起到什么作用 一般用于重复执行某些代码,或持续读取一些数据等,是必不可少的知识点 比如输出:“10000次 我爱你” ...//循环体 } 在控制台输出我爱你100次 for (int i = 0; i <

    循环在代码中起到什么作用

    一般用于重复执行某些代码,或持续读取一些数据等,是必不可少的知识点
    比如输出:“10000次 我爱你”
    在这里插入图片描述
    如果不使用循环,需要打10000次…使用循环,几秒内可以执行完成

    有哪四种循环

    for(确定次数)

    while(不确定次数)

    do…while(先执行一次在判断)

    foreach(一般用于数组)

    这都是经常需要使用到的

    for循环(确定次数)

    for (表达式; 表达式; 表达式) {
    //循环体
    }

    在控制台输出我爱你100次

    for (int i = 0; i <= 100; i++) {
    Console.WriteLine(i+“我爱你”);
    }

    i++:每次执行一次都加一位数,如果i=1;循环一次后i++就等于2,作用只是单纯的加+1
    如果后面没有写i++,那么条件就一直成立,将进入死循环,不会停止

    for (int i = 0; i <= 100;) {
    Console.WriteLine(“我爱你”);
    }

    在这里插入图片描述
    一直执行,不会停止

    另一种死循环的写法

    for (; ; )
    {
    Console.WriteLine(“我爱你”);
    }

    这样也是一个死循环,因为没有参数,条件一直成立

    弹出循环体

    执行10000次,在520次的时候退出循环

    使用:
    break

    for (int i=0;i<=10000 ;i++ )
    {
    Console.WriteLine(i+“我爱你”);
    if (i == 520) {
    break;
    }
    }

    在这里插入图片描述
    在520次的时候弹出循环体,520后的数字将不会执行

    弹出本次循环,继续下一次

    例如:我没有女朋友,不喜欢520这个数字

    使用:
    continue

    for (int i=0;i<=1000 ;i++ )
    {
    if (i == 520) {
    continue;
    }
    Console.WriteLine(i + “我爱你”);
    }

    在这里插入图片描述
    跳过了,520

    foreach循环(数组)

    这个一般用于数组类的循环,比如:循环出所有的进程,循环出数组的全部内容

    写法:

    foreach(类型 变量名 in 表达式)
    {
    循环语句
    }

    比如有一个int类型的数组,循环出他所有的元素

    int[] a = new int[5];
    a[0] = 1;
    a[1] = 2;
    a[2] = 3;
    a[3] = 4;
    a[4] = 5;
    foreach (int b in a)
    {
    Console.WriteLine(b);
    }

    运行结果:
    在这里插入图片描述

    获取所有进程:

    Process[] a = Process.GetProcesses();
    foreach (Process b in a)
    {
    Console.WriteLine(b);
    }

    在这里插入图片描述
    这个循环就是用来循环数组类的,特别好用

    do…while()

    个人比较少使用到

    和for区别就是当不确定次数的时候使用

    这个循环是先执行一次,在判断条件是否成立

    int a = 0;
    int b = 1;
    do
    {
    Console.WriteLine(“不管怎么样我都会执行一次!”);
    } while (a >=1);

    不管条件成不成立都先执行一次!
    在这里插入图片描述

    循环50次

    int a = 0;
    int b = 1;
    do
    {
    Console.WriteLine(“不管怎么样我都会执行一次!”);
    a++;
    } while (a <=50);

    同理记得在循环体a++,不然就是个死循环

    while

    这个和do…while的区别就是先判断在循环,区别不大;

    表达式可以是个 布尔值

    while (true) {
    Console.WriteLine(“我是个死循环”);
    }

    死循环

    读取数据库记录:

    while (a.Read()) {
    string str = a[“id”].ToString();
    Console.WriteLine(str);
    }

    和do…while使用方法一样!!!

    纯手打,点个赞呗~

    展开全文
  • HLS高级综合能够实现软体代码的硬件加速,主要是因为其对代码中的循环体(for,while)等进行了并行性优化,采用流水,展开,合并,嵌套,数据流等方法,将软体中需要一步步执行循环体,在硬件电路中实现并行化...

    HLS高级综合能够实现软体代码的硬件加速,主要是因为其对代码中的循环体(for,while)等进行了并行性优化,采用流水,展开,合并,嵌套,数据流等方法,将软体中需要一步步执行的循环体,在硬件电路中实现并行化处理,从而大幅提高计算速度,正好应对当下这种高计算量的需求。

    本博客讲解一下循环体优化的一些方法,以及一些特殊循环体的优化(嵌套for循环,变量边界循环体),参考b站赛灵思官方HLS介绍视频。

    参数指标

    综合报告参考的指标参数,较为重要,如下图:

    Loop Trip Count:循环总次数

    Loop Iteration Latency:每次循环占用时钟周期

    Loop Iteration Interval(Loop II):两次循环之间的间隔

    Loop Latency:整个循环的时钟周期

    Function Latency:函数的时钟周期

    Function Iteration Interval:函数总共占用时钟周期

     

    优化方法

    1. Pipeline:

    不同次数的循环进行流水线操作提高并行性改善Latency和Interval,流水操作的前提是不同循环次数之间没有数据依赖。

     

    2. Unroll:

    展开真个循环体,等于复制循环,同步进行以增加并行性

    3. for循环的合并

    • 边界都为常数的两个循环合并取最大的边界
    • 当for循环合并的两个循环边界一个是常数,另一个无法确定的时候无法合并。
    • 上述两个边界都是不确定边界时可以把边界范围大的拆分,使其一部分边界相等

    4.嵌套for循环

    通过代码优化将后两种嵌套转化成前两种

    1. 对上级循环pipeline会将下级所有循环unroll(资源利用率成倍(循环展开后的总次数)增加)。
    2. 建议对内部嵌套循环展开,达到时延和资源的中和。

    5.  其他优化

    ①rewind:缩短循环多次执行的间隔,仅适用单循环

    ②循环边界是变量的问题:

        1.使用tripcount directive:手动设定循环边界的最大值最小值。

        2.把循环边界的数据类型声明成ap_int<W>。

        3.使用assert macro。

    上述三种方法优化效果比较:

     

     

    展开全文
  • while循环得到循环次数

    千次阅读 2013-05-26 01:04:02
    在for循环中,我们很容易得到循环次数,因为是作为条件出现的。在while也可以得到,如下: $link = mysql_connect('localhost','root','pwd'); mysql_select_db('db'); $sql = "select region_id,local_name ...
  • 3.循环体:重复要做的事情,若干行语句 4。步进语句(如计数器更新):每次循环后的扫尾工作,每次循环结束之后都要执行一次。 for循环格式 for(初始化表达式;条件判断;步进语句){ 循环体;//重复执行的语句 } ...
  • 我们都知道,循环体可以有五种,while、do while、for、goto和递归。 虽然理论上任何循环都可以用其他四种转换,但是因为goto在安全性以及在功能上能够被取代的特点,所以一般不会用到;而递归的特殊性和编写的困难...
  • Java--do while循环结构

    2019-07-11 23:52:09
    do while循环结构 ...*循环体执行次数是:1~N次【至少一次】 注意事项: *do while循环语句最终有一个“分号”; 示例: *使用do—while循环结构实现:计算1~50中是7的倍数的数值之和并输出 public class...
  • 避免在循环体中创建对象

    千次阅读 2017-04-11 09:23:25
    避免在循环体中声明创建对象,即使该对象占用内存空间不大。  这种情况在我们的实际应用中经常遇到,而且我们很容易犯类似的错误,例如下面的代码:  Java代码  for (int i = 0; i ; ++i) { ...
  • #include <stdio.h> int main() { /* for循环(知道次数的时候用for循环) ... 4:循环体(条件成立之后要重复去做的事情) 执行顺序;1 2 4 3 2 4 3 2 4 3 2 4 3......2不成立循环结束 */ /...
  • public static void main(String[] args) { int i = 0; for(;i&lt;4;i+=2){ System.out.print(i+" "); } System.out.println(i); } /*(1)语法:for(表达式1;... 循环体 }*/ /*表达式1:1....
  • 循环体对数组的增减是否会影响for循环,增加的元素是否会被循环?for与for in详解   先来看第一个for循环 for (let i=0;i&lt;arr.length;i++) { if (arr[i]==2) { arr.push('6') } console.log(arr[i]...
  • JAVA中有3种循环:for...for循环经常用于重复执行程序某部分特定次数。  for (int dex = 0; dex < 12; dex++) { System.out.println("dex = " + dex); }  注意:一个与循环相关的不常见的术语是迭代,它指...
  • Java--for 循环之单层循环 执行顺序

    千次阅读 2017-07-30 15:13:18
    for循环语句是最常用的循环语句。...先来看假如只有一层循环结构,分别用①代表初始化表达式,②表示循环条件,③表示操作表达式,④表示循环体 for (① ; ② ; ③)  { ④ } 第一步,执行① 第二步,执行②,如
  • 重复执行——循环结构

    千次阅读 2019-12-02 22:57:02
    也就是“当表达式成立时,不断重复执行循环体”,所以又称为“当型循环”。 2、do—while语句 此语句是C++中用于解决至少执行一次重复操作(循环体)的循环语句。 (1)格式 do{ 循环体 }while(表达式); (2...
  • 第四课 Python while 循环次数限制

    万次阅读 2018-06-25 14:42:22
    三:进入循环体再进行if判断,如果成立则跳出循环 四:number执行次数加1 五:while后加else代表循环结束后执行的内容 #!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: # @Date : 2018/6/25 b = 8 ...
  • 今天总结了下SE阶段的循环结构以及执行流程,希望对java的初学者提供一些帮助!循环结构1.for循环(1)语法格式 for(表达式1;... => 若成立,则执行循环体 => 表达式2 => 判断条件表达式是否成立 => 若不成立,
  • Python中while和for循环的区别以及执行流程 区别:while循环适用于未知循环次数的循环,for循环适用于已知... 循环体 #循环条件为True时,执行循环体 for 变量 in 列表: 循环体 else 不符合循环条件: ...
  • 示例代码展示 1.for(i=1;i<=n;i++){ //n+1次 - for(j=1;j<=n;j++){ //n(n+1)次 - c[i][j]=0; //n*n次 - for(k=0;... - c[i][[j]=c[i][[j]+a[i][j]*b[k][j];...我们把
  • 关于for循环和while循环中的次数问题

    千次阅读 2015-07-08 23:55:33
    每当使用到for 和 while循环,到底循环多少次的问题每次都搞的我头脑很乱,不能专注于更重要的实现。今天,解决了: 画个表,一列表示一次。 这样,多少次,在脑海中很清晰。
  • 4.执行完第一次内循环体操作后,进行内循环体变量累加,再次执行循环体操作,直到不满足进入内循环体条件为止; 5.执行循环体操作; 6.在第一次外循环体操作完成后,外循环体变量累加,回到步骤1...
  • 首先,我们看看循环是什么 1、循环是什么 当我们需要多次执行同样的代码段,通常被称为一个循环。 Java有非常灵活的三种循环机制: while 循环 do...while 循环 for 循环
  • 循环

    2019-07-21 22:46:14
    1.关于循环 循环是用来控制语句块重复执行的一种结构。 循环可以用于让一个程序重复地执行语句。...循环体:循环所执行的内容 .循环的周期:所执行的步长,统计变化情况,识别是否继续 2.三种循环的实现 2.1...
  • 先看一个实例(以下代码在python环境下): array=[3,4,5] ...在假想for循环循环次数会改变时,那上述代码将随着array的不断加长而变成一个死循环,但实际运行的结果是 0 1 2 [3, 4, 5, 0, 1, 2] 结果说明
  • 当2个循环嵌套的时候,外层循环体执行一次,内层循环体执行 n 次( n 是内层循环的次数)。请看下面的例子: 运行结果: 比较代码和运行结果,我们发现,内层循环体执行 3 次,外层循环体执行 1 次。这就有点...
  • while循环语法格式与执行流程

    千次阅读 2020-07-17 20:52:38
    循环体语句; 步长语句(控制体语句); } 这里可以举个小小的例子: while循环实现1-100到所有数字之和 class SumDemo{ public static void main(String[] args){ int i = 1; //while循环条件语句在while循环...
  • while循环和doWhile循环

    千次阅读 2017-08-02 20:57:40
    在while循环中的小括号中,是一个条件判断,当条件判断的结果是true的时候才会进行循环体中的内容,当循环体执行一遍之后,在返回到条件处判断,如果符合条件,继续运行循环体,如果不符合,直接运行while循环之外的代码 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 78,972
精华内容 31,588
关键字:

循环体的执行次数