首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么当我给出'y‘作为输入时这个循环会循环,而当我给出一个'n’时却运行得很好?

当您给出'y'作为输入时,循环会循环的原因可能是因为在循环的条件判断中,判断条件被设置为当输入不等于'n'时继续循环。因此,只要您给出的输入不是'n',无论是'y'还是其他任何字符,循环都会继续执行。

而当您给出'n'作为输入时,循环会正常结束的原因是因为循环的条件判断中,判断条件被设置为当输入等于'n'时结束循环。因此,只有当您给出的输入是'n'时,循环才会结束。

这种设计可能是为了实现某种特定的逻辑或功能。如果您希望循环在输入为'y'时也能正常结束,您可以修改循环的条件判断,使其在输入为'y'时结束循环。具体的修改方式取决于您的代码实现和需求场景。

请注意,以上答案是基于一般情况下的推测,具体情况还需要根据代码实现和上下文来确定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【初阶数据结构篇】插入、希尔、选择、堆排序

i(0n)的tmp数据进行插入时,会将其与前面i个数据比较i次,总比较次数即1+2+3+……(n-1),O(n^2) 最好情况:数组升序排列 当我们对下标为i(0n)的tmp数据进行插入时...: 外层循环的时间复杂度可以直接给出为:或者,即 O(log n) 2 O(log n) 3 O(logn) 内层循环: 假设⼀共有n个数据,合计gap组,则每组为n/gap个;在每组中,插⼊移动的次数最坏的情况下为...n/9 n/27 ...... 2 1 n • 当gap为n/3时,移动总数为: ∗ 3 • 当gap为n/9时,移动总数为: ∗ n 9 (1 +2) = n n (1 +2+3+....+8) =...某⼀顶点时,排序次数逐渐下降⾄n,⽽该顶点的计算暂时⽆法给出具体的计算过程 希尔排序时间复杂度不好计算,因为 gap 的取值很多,导致很难去计算,因此很多书中给出的希尔排 序的时间复杂度都不固定。...//避免maxi begini都在同一个位置,begin和mini交换之后,maxi数据变成了最小的数据 if (maxi == begin) { maxi = mini; } 为什么会造成这样

6610

【初阶数据结构篇】插入、希尔、选择、堆排序介绍(上篇)

,显然: 初始为0 末态为n-2 tmp:有序序列后的第一个待排序数据,显然 初始为1 末态为n-1 以一次循环为例: 将tmp与end位置数据进行比较, 若end处更大,需要将end...i(0n)的tmp数据进行插入时,会将其与前面i个数据比较i次,总比较次数即1+2+3+……(n-1),为O(n2) 最好情况:数组升序排列 当我们对下标为i(0n)的tmp数据进行插入时...: 外层循环的时间复杂度可以直接给出为:O(log2n) 或者O(log3n) ,即O(logn) 内层循环: 假设⼀共有n个数据,合计gap组,则每组为n/gap(大致)个;在每组中,插⼊移动的次数最坏的情况下为...n,即前⼀阶段排序次数是逐渐上升的状态,当到达某⼀顶点时,排序次数逐渐下降⾄n,⽽该顶点的计算暂时⽆法给出具体的计算过程 内外循环综合来看,外层循环总共log3n次,内层循环的每次排序次数暂时无法精确计算...: 在希尔排序开始时增量较大,分组较多,每组的记录数目少,n小,此时直接插入最好和最坏时间复杂度n2差距很小,故各组内直接插入较快,后来增量di逐渐缩小,分组数逐渐减少,而各组的记录数目逐渐增多,但由于已经按

9710
  • 刷题-检查点重复次数不定的解决方案:scanf的返回值

    第一次错误 第二次尝试 观察了一下,原来是需要添加一个循环。 此时我还没有意识到事情的严重性,高高兴兴的添加了一个for()循环结构,然后在printf()中添加转义字符”\n“进行换行。...为什么会这样? 输入的次数不确定? 为什么scanf在没有接受到新的值的时候还会执行下一步? 啊?这是什么题?我没见过啊?...基于这个性质,我编写了一个while循环 while(scanf("%d%d", &a, &b) == 2){} 这个循环首先会调用scanf函数,然后对scanf的返回值进行值判断,当scanf成功接收了...2个参数时,判断的值就为真,循环执行。...错误处理 当scanf返回EOF或者一个负值时,可以进行特定的错误处理,比如提示用户重新输入或者结束程序。

    7510

    【深度学习】Transformer及其变种

    例如,当我们需要在论文里解释为什么算法或者改动能够work的时候,一张基于attention的热力图显然更容易说明我们的代码究竟做到了什么。...但是关于多头注意力机制是不是有用,为什么有用,目前还没有一个很好的解释。...An Analysis of BERT’s Attention》一文中,作者分析了,同一层中,不同的头之间的差距,以及这个差距是否会随层数变化而变化。...例如,当我们需要输出直接复制输入时,Transformer并不能很好地学习到这个操作。 不适合处理超长序列:当针对文章处理时,序列的长度很容易就超过512。...一个单层网络通常需要占用GB级别的内存,但是当我们训练一个多层模型时,需要保存每一层的激活值和隐变量,以便在反向传播时使用。这极大地提高了内存的占用量。

    71110

    没有之一,我见过的最漂亮代码!!

    我很喜欢这个算法,但我总是无法弄明白算法中最内层的循环。我曾经花两天的时间来调试一个使用了这个循环的复杂程序,并且几年以来,当我需要完成类似的任务时,我会很小心地复制这段代码。...由于内部循环总是会执行u-l次比较,因此我们可以通过在循环外部增加一个简单的操作来统计比较次数,这就可以使程序运行得更快一些。在示例3-3的Quicksort算法中给出了这个修改。...如果我们能够计算这个数值,那么将使我们实验的功能更加强大。我们现在无需对一个n值运行多次来估计平均值,而只需一个简单的实验便可以得到真实的平均值。...它的运行时间将正比于N2,并且所需的存储空间正比于N。这个程序的优点之一就是:在程序执行结束时,数组t中将包含数组中从元素0到元素N的真实平均值(而不是样本均值的估计)。...当我为给出这些没有被实现过的程序感到不安时,Alan Perlis的话安慰了我,他说“软件是不是不像任何一个事物,它就是意味着被抛弃:软件的所有意义就是把它看作为一个肥皂泡?”

    1.8K2219

    【初阶数据结构与算法】八大排序算法之选择排序(直接选择排序、堆排)

    一、单向直接选择排序    选择排序很好理解,就是按照字面意思来,比如我们想要将一个数组排成升序,那么小的值就会被放在前面,我们就可以每次都找到数组中的最小值,把它往前面放,循环往复,最终我们就可以将数组排成升序...,接下来我们分析一下它的时间复杂度,它拥有两层用于遍历的循环,所以时间复杂度为O(N^2),虽然不是很好,但是它的思路很简单    其中单向直接选择排序就是选最小的元素往前或往后放,一次只选一个元素,...这里我也不再墨迹了,直接举一个例子画图讲解,如图:    根据上图我们已经发现了问题,我们来分析一下为什么会出现这种问题,根本原因就是数组中最大值就在begin的位置上,当最小值和begin位置元素进行交换时...,仍然在0.1秒之内,而两个直接选择排序则是慢了非常多,已经以分钟来计数了,这就是O(N * log N)的力量    当我们比较完堆排和直接选择排序之后,我们来比较一下单向和双向两个直接选择排序,我们惊讶地发现...,单向的直接选择排序居然更快,理论上来说,双向是单向的优化,循环次数更少,为什么还会出现这种问题呢?

    11810

    教程 | 一个基于TensorFlow的简单故事生成案例:带你了解LSTM

    有着最高概率值的元素的索引便是逆序字典中预测符号的索引值(例如:一个 one-hot 向量)。图 2 给出了这个过程。 ? 图 2.每一个输入符号被分配给它的独一无二的整数值所替代。...(例如:「mouse」,「mouse」,「mouse」)但并不一定是这个故事中的序列,那么会自动生成另一个故事。...将输出表达成单向量是效率较低的方式,尤其当我们有一个现实的单词量大小时。牛津词典有超过 170,000 个单词,而上面的例子中只有 112 个单词。再次声明,本文中的示例只为了简化讨论。 3....本文例子中的输入大小为 3,看一看当采用其它大小的输入时会发生什么吧(例如:4,5 或更多)。 5. 每次运行代码都可能生成不同的结果,LSTM 的预测能力也会不同。...训练次数越多(超过 150,000 次)精度也会相应提高。每次运行代码,建立的词典也会不同 6. Tensorboard 在调试中,尤其当检查代码是否正确地建立了图时很有用。 7.

    1.2K90

    VS调试技巧

    事实上当我们运行起来后屏幕上会一直打印“加油”,好像跟我们的猜测有很大的差别。那么为什么会发生这样的现象呢?像这种情况我们光靠脑子想是想不出来个所以然的,我们需要借助强大的调试功能。...当我们继续按F10给 arr[12] 赋0值后,i 的值也跟着变为0。如此循环下去,程序就陷入了死循环。...(如果你已经看出了问题所在,还请不要声张),但是运行起来才发现有问题,程序陷入了死循环。...作为程序员,不使用调试或不会调试是万万不可的。同时,调试还可以让开发者深入了解程序的运行机制,提高编程技能和经验。...调试解决的是运行时问题,也就是说调试的前提是你的程序得先能运行起来,没有简单的语法和链接错误,然后才能调试。

    10510

    通俗易懂--循环神经网络(RNN)的网络结构!(TensorFlow实现)

    例如, 当我们写下⼀个句⼦时,可能会根据句⼦后⾯的词来修改句⼦前⾯的⽤词。**双向循环神经⽹络通过增加从后往前传递信息的隐藏层来更灵活地处理这类信息。...t)},y^{(t)})L(y′,y)=t=1∑Tx​​L(t)(y′(t),y(t))$ 在这个计算图中,通过y′(1)y^{'(1)}y′(1)可以计算对应的损失函数,于是计算出第一个时间步的损失函数...在这个反向传播的过程中,最重要的信息传递或者说最重要的递归运算就是这个从右到左的运算,这也就是为什么这个算法有一个很别致的名字,叫做**“通过(穿越)时间反向传播(backpropagation through...为什么RNN 训练的时候Loss波动很大 由于RNN特有的memory会影响后期其他的RNN的特点,梯度时大时小,learning rate没法个性化的调整,导致RNN在train的过程中,Loss会震荡起伏...,为了解决RNN的这个问题,在训练的时候,可以设置临界值,当梯度大于某个临界值,直接截断,用这个临界值作为梯度的大小,防止大幅震荡。

    3.4K30

    对不起,我的代码评审毁了一个程序员!

    他为人很好,我甚至感觉他有点可怜,但我也不能因此而放过他的代码。我有权批评他的代码,不是吗?我比他优秀,所以我做的没错。没有人会把很差的代码说成很好,不是吗?...但当我接到另一个拉取请求的审核时,事情却发生了戏剧性的变化。 刚开始时一切一如既往。我打开 pr,查看了它想要解决的问题,设想了一下我可能会采用的解决方案,然后开始阅读代码。...技术上,我比这个人更强。所以 1000 行的 pr 中夹杂了我给出的 200 多条评论,似乎这个人毫无生还的希望。 当我把鼠标移到“提交评审”上时我突然想:我为什么要这样?...事实证明,你不必成为一名优秀的程序员,而只需要说服别人你是一个好的程序员。这种行为会造成一种恶性循环,不利于培养专业人员,而是有害的问题。 如果你想爬得更高,那么你会无时无刻不担心这种伪装会被识穿。...即便我们在年轻时被嘲笑,那并不意味着日后你必须以牙还牙。恶性循环很容易被打破。如果你能够承认另一个开发人员比你更有才华,那么可能你会输掉争论,但你的生活也会更加幸福。 这有点像日本合气道的做法。

    78820

    学会VS调试

    在介绍调试前,我们需要了解一个东西,bug。相信大家对这个词应该不陌生吧! 想象一下你正在建造一座房子,你按照自己的设计图努力施工,但是等房子建好了,却发现有些地方不对劲,比如门打不开,或者屋顶漏雨。...有时候,当我们运行代码,却发现结果不是我们想要的,这就说明代码里可能有“毛病”,也就是我们说的 bug 。 bug 就是在一个系统、一个东西或者一件事情里,那些影响正常运行或使用的小毛病、小错误。...那你知道bug这个词是怎么来的吗?为什么我们现在管故障叫bug呢?...F5:启动调试,经常用来直接跳到下⼀个断点处,⼀般是和F9配合使用 注意:如果有两个断点,会执行逻辑上的第一个断点,而不是按顺序执行。...上图中有两个断点,但是由于第一个是循环,因此当你使用F5的时候,会再次跳到第一个断点,而不会跳到第二个断点。

    7910

    理解这25个概念,你的人工智能,深度学习,机器学习才算入门!

    如果你想知道我为什么要写这篇文章——我之所以在写,是因为我希望你开始你的深度学习之旅,而不会遇到麻烦或是被吓倒。...想象一下,当我们得到新信息时我们该怎么做。当我们获取信息时,我们一般会处理它,然后生成一个输出。...激活的神经元的组合会给出输出值。 一个很好的神经网络定义—— "神经网络由许多相互关联的概念化的人造神经元组成,它们之间传递相互数据,并且具有根据网络"经验"调整的相关权重。...当我们将滤波器滑动到输入体积的宽度和高度时,将产生一个二维激活图,给出该滤波器在每个位置的输出。我们将沿深度尺寸堆叠这些激活图,并产生输出量。 你可以看到下面的图,以获得更清晰的印象。 ?...这个神经元的基本优点是它给出了更广义的输出。 ? 23)循环神经网络(RNN)——循环神经网络特别用于顺序数据,其中先前的输出用于预测下一个输出。在这种情况下,网络中有循环。

    704141

    线程清理(pthread_cleanup_push函数和pthread_cleanup_pop函数)

    当我们注释掉pop函数调用之后,再次编译,会发现报错如下: ? 当你发现这个错误,却无可奈何的时候,你甚至像我一样,检查了好几遍自己的代码。发现没有意料之外的结尾,所有的{}都是成对出现的。...—————————既有趣,又很烦人的坑————————— 下面给出这两个宏的定义,就可以很直观的看到到底是怎么回事。...do...while循环没完。...上述代码中得pthread_self()函数是用来获取正在调用它得线程的ID。而pthread_setcanceltype()函数是用来设置线程取消立即生效的,否则线程取消不是立即生效的。...调用pthread_exit()结束线程时; 响应取消线程请求时; 用非0的参数调用pthread_cleanup_pop()时。

    4.3K30

    【概念】深度学习25个概念,值得研读

    如果你想知道我为什么要写这篇文章——我之所以在写,是因为我希望你开始你的深度学习之旅,而不会遇到麻烦或是被吓倒。...想象一下,当我们得到新信息时我们该怎么做。当我们获取信息时,我们一般会处理它,然后生成一个输出。...激活的神经元的组合会给出输出值。 一个很好的神经网络定义—— “神经网络由许多相互关联的概念化的人造神经元组成,它们之间传递相互数据,并且具有根据网络”经验“调整的相关权重。...当我们将滤波器滑动到输入体积的宽度和高度时,将产生一个二维激活图,给出该滤波器在每个位置的输出。我们将沿深度尺寸堆叠这些激活图,并产生输出量。 你可以看到下面的图,以获得更清晰的印象。 ?...这个神经元的基本优点是它给出了更广义的输出。 ? 23)循环神经网络(RNN)——循环神经网络特别用于顺序数据,其中先前的输出用于预测下一个输出。在这种情况下,网络中有循环。

    59470

    深度学习必知必会25个概念

    如果你想知道我为什么要写这篇文章——我之所以在写,是因为我希望你开始你的深度学习之旅,而不会遇到麻烦或是被吓倒。...想象一下,当我们得到新信息时我们该怎么做。当我们获取信息时,我们一般会处理它,然后生成一个输出。...激活的神经元的组合会给出输出值。 一个很好的神经网络定义—— “神经网络由许多相互关联的概念化的人造神经元组成,它们之间传递相互数据,并且具有根据网络”经验“调整的相关权重。...当我们将滤波器滑动到输入体积的宽度和高度时,将产生一个二维激活图,给出该滤波器在每个位置的输出。我们将沿深度尺寸堆叠这些激活图,并产生输出量。 你可以看到下面的图,以获得更清晰的印象。 ?...这个神经元的基本优点是它给出了更广义的输出。 ? 23)循环神经网络(RNN)——循环神经网络特别用于顺序数据,其中先前的输出用于预测下一个输出。在这种情况下,网络中有循环。

    64650

    CS231n第九节:循环神经网络RNN

    输入一串视频帧的序列,然后生成一个标签代表这个视频中发生了什么动作。另外一个多对一任务的例子是NLP领域的情感分类任务,给出一个句子的单词串,然后判断这个句子的情感类别。...比如说给视频添加字幕,输入是一个可变的视频帧(比如说可能是10分钟的也可能是10小时的视频),而输出也是不定长度的字幕。而卷积神经网络只能接收固定长宽大小的输入,并且不能很好地泛化到不同大小的输入。...为了解决这一问题,我们需要学习循环神经网络RNN。 1.3 RNN概念 RNN基本上就是一个黑盒(如下图左所示),当逐一处理一个输入的序列时,黑盒中的“内部状态”也会随之更新。...在每个时间段,我们向RNN输入一个向量,RNN将这个内部状态(上一时间段的状态)和输入的向量一起作为接收到的输入。当我们调整RNN的权重时,RNN在接受同样的输入后,会对内部状态产生不一样的改变。...RNN的预测结果会以一个得分分布的形式给出,代表了RNN认为在字母表中的每个字母在接下来出现的可能性。

    70640

    【狂热算法篇】探秘图论之 Floyd 算法:解锁最短路径的神秘密码(通俗易懂版)

    1.4算法复杂度: 1.4.1时间复杂度: Floyd 算法的时间复杂度是 O(N^3)。这是因为算法中有三层嵌套的循环,每层循环最多执行 n 次,所以总的时间复杂度是 N*N*N=N^3。...(这里先写三维状态方便我们理解,之后改写代码在做降维处理及解释) 是不是还会有点迷糊对这个定义;下面我们再细说一下: 迷惑的应该是这个k是怎么规定的: 所谓的不超过k: 填表时为何i到j会出现多个中间点...: 我们上面不是模拟了一下根据节点的个数去依次作为中间点去填表嘛(其实这里就是把这个过程转化成了代码):也就是我们每次会选择一个节点作为中间点;这就可能会得到它符合要求(以它作为中间点的话,我们可以比之前更短路径...这里倒序到是不用,直接把与k关的下标干掉(注意k这层循环不能去掉)即可: k循环为什么套在最外层: 这里我们肯定是可以根据上面我们模拟的例子来写代码了,但是可能会有个疑问,为什么k要在最外层而不是最内层...这就错了,我们之后可能会对这个表里的值先相加判断是不是最小路径(后面会说到);那么此时就越界了,因此选用的是0x3f3f3f3f(整型);至于为什么?

    10010

    R语言的好与坏丨讲座中字视频丨附讲座PDF

    因此一定程度上作为编程语言的R语言与统计概念同义。于是使用其他语言变成不可想象的事。 R语言是领域特定语言(DSL) 要理解一个领域特定语言,你必须了解这个领域。先了解这个领域开始,而不是语言。...作为统计学家,我们常常做这类事,在语言中有子语言能够更好的表达。再详细讲解下,设置这一组六个变量,计算X Y Z相加和的平方。这不能按照字面理解为一个多项式的平方,完全不是这个意思。...你能得到所有想知道的信息,这个包含在一个对象中。所以当我调用总结时,会打印出一个对象。当我仅只对对象的某部分感兴趣时,我会使用$符号。当你想要点样分布的模型的时候,R使用$符。...y~x 指我想绘制关于x的y函数等等。 语言的特点 R是动态型的,具有第一级函数,具有闭包(closures),因此你可以将一个函数作为一个参数传递给另一个函数,诸如此类。...这种对需要的向量进行预分配的方式,是很好的R语言方式。但是不适合C语言,因为浪费内存。所以如果你是一个从C语言转到R语言的程序员,你会觉得这种写法很糟糕。没错,这个代码很简洁。但要聪明一点。

    1.8K90

    C程序设计(第四版)课后习题完整版 谭浩强编著

    (一般经历6个阶段:①问题分析;②设计算法;③编写程序;④对源程序进行编辑,编译和连接;⑤运行程序,分析结果;⑥编写程序文档;) 2、为什么需要计算机语言?高级语言的特点?...为什么要提倡结构化的算法? 答:由顺序结构,选择结构,循环结构构成的算法即为结构化的算法。结构化的算法不存在无规律的转向,只在本基本结构内才允许存在分支和向前或向后的跳转。...循环结构有效提高简单重复率高程序的运行效率。...(x=a)&&(y=b)&&0 5. !(a+b)+c-1&&b+c/2 答:如下: 0因为a+b=7是大于c的,这个式子得1,b==c是不成立的,得0.1&&0得0。...("该数的平方根为%d\n",result); 12 }else 13 { 14 printf("输入错误,请重新输一个小于1000的正数!!!

    1.5K10

    python模块与包揭秘

    math模块对象所有的属性 写过c语言程序的人都喜欢把python中的import比作c中的#include,其实这是不太正确的,因为import不只是把一个文件插入到另一个文件,导入时运行时的运算,程序第一次导入指定文件是...,会执行三个步骤: 找到模块文件 编译成位码(需要时) 执行模块的代码来创建其定义的对象 上面三个步骤都比较好理解,第三步需要记住,第一次导入模块文件时,模块文件是会运行的,所以如果你的模块文件中又print...reload函数主要是让我们的程序变得更加动态: 只会在第一次导入时,加载和执行该模块代码 之后得导入只会使用已加载得模块对象 reload函数会强制已加载得模块得代码重新载入并重新执行。...例如当我自定义了一个文件叫做string.py,然后我另一个文件中有import string这么一条语句,目的是导入内建模块string,但是却导入了我自己写的string.py,这是由于在python2.7...还有一个用的比较广泛的技巧:每个模块都有一个__name__属性,如果一个文件是作为模块被导入的那么__name__的值就是它的文件名,如果一个文件是作为主程序运行的(也就是不是被导入的),那么它的__

    48910
    领券