-
理论上每次都是计算的,但实际上编译器会优化这个,直接用8代替这个“3+5”,所以一般情况下程序运行的时候不需要一个计算,因为这个计算是在编译阶段进行的,vs2008环境下,反汇编**如下(倒数第二行的最后8个是“3+5”的替代品): for(int i = 0; i < 5+3;i++)013d17ce mov dword ptr [i],0 013d17d5 jmp wmain+30h (13d17e0h) 013d17d7 mov eax,dword ptr [i] 013d17da add eax,1 013d17dd mov dword ptr [i],eax 013d17e0 cmp dword ptr [i],8 013d17e4 jge wmain+45h (13d17f5h) 但是,如果与 i 相比,它不是一个常量表达式,它就是函数的返回值, 如 for(int i = 0; i < getvalue();i++),getvalue() 函数每次循环时都会被调用一次。
-
这主要取决于您的程序。 如果多个for循环非常卡住,在多个for循环的情况下,分析是否可以减少for循环。
根据程序,break 是结束整个循环,continue 是结束单个循环。
-
你不能说它是一种算法,它不是一个结构,也许一个算法中只有一个简单的for语句,但你不能说一个for语句是一种算法,因为一个算法是用来解决问题的,而for结构本身并不能解决问题,但人们通常谈论和学习的是一种可以很好地解决问题的聪明算法, 所以大多数时候,如果你只是用for循环来列出,人们不会认为你选择了算法。
比如你想在很多数字中找一个数字,我可以一个一个地找到它们,最后找出我需要的东西,这就是算法,但因为效率比较低,需要很长时间,所以它是一种比较算法,你也可以用一半或其他搜索方式对数字进行排序, 这样你就可以做同样的事情,但我可能只花了前一个的十分之一的时间,甚至千分之一,所以我说这是一个更好的算法。
一个算法的好坏通常要从时间和空间两个方面来考虑,影响算法选择的用途次数和问题的大小就是使用次数。
时间是运行算法所需的时间,空间主要是指使用算法所需的内存,两者都与问题的大小有关。
问题的使用次数和大小如何影响算法选择。 举个例子,如果你还在一堆数字中寻找一个数字,如果你只需要在其中找一两次数字,你就不应该使用我上面的方法,因为你可以在足够的时间内对它们进行排序,让你做你需要的事情,而使用上面的算法并不能减少时间, 但增加了时间。
例如,如果一堆只有几个数字,那么你就不需要使用上面的算法,你会发现当数字不多时,计算时间并没有减少,或者时间减少得很少。
一般来说,我们考虑算法,只有当我们觉得对常规算法造成的时间和空间损失不满意,或者常规算法无法达到我们的要求时,我们才会考虑使用某种算法进行优化或实现。
算法不仅仅是一个函数或其他东西,它代表着一种思维方式,它不是你已经掌握的算法的应用,即使你掌握了算法,所以要学习算法,你必须彻底理解算法的思想,然后你可以根据实际情况选择应用算法。 也许这两段是完全不同的,但它们使用相同的算法,因为它们使用相同的思维方式来解决问题。
-
算法是解决某个问题的方法,一个想法。
例如:求最大公约数的滚动减法、求素数的筛选法、排序的气泡法、排序的选择法......
而 for 是一个不能说是算法的语句,它只是算法描述过程中的一种表达形式,所以也可以用 while 语句来描述。
可以这么说,递归是马马虎虎的,但它是一个更通用的数学思想,这意味着它被应用于特定的算法。
-
for循环是一个语句,即一个算法可以加到for循环中,也可以不加,算法等价于一个方法。
-
for 不是算法,是语言的基本结构。
编程语言通常以三种方式运行:顺序执行、分支执行 (if) 和循环执行 (for、while)。
-
算法是解决某个问题的方法,一个想法。
例如:求最大公约数的滚动减法、求素数的筛选法、排序的气泡法、排序的选择法......
而 for 是一个不能说是算法的语句,它只是算法描述过程中的一种表达形式,所以也可以用 while 语句来描述。
递归是一种算法,但它是一个更通用的数学思想,这意味着它被应用于特定的算法。
-
如果符号循环有效,则它是一种算法。
例如,编写一个读取数组内容的算法。
int a[10]=;
int *p;
for(p= a;p<&a[10];p++) 是算法:
算法应具有以下五个重要特征:
算法可以使用各种不同的方法进行描述,例如自然语言、伪**、流程图等。
1.差。
算法的无限性意味着算法必须能够在有限数量的步骤后终止.2 确定性.
算法的每个步骤都必须精确定义;
3. 输入。 一个算法有0个或更多的输入来描述操作对象的初始情况,所谓0个输入,就是算法自己决定了初始条件;
4.输出。 算法具有一个或多个输出来反映处理输入数据的结果。 没有输出的算法是没有意义的;
5.可行性。
算法中执行的任何计算步骤都可以分解为基本的可执行操作步骤,即每个计算步骤都可以在有限的时间内完成。
-
for 循环:for counter = start to end [step increment]。
statements
next [counter]
循环中语句的执行次数为:int((end-start) counter)+1,即变量的结束值(end)——变量(start)的起始值,再除以步长(increment),得到的结果四舍五入,加上1,即为循环语句执行的总次数。
例如:对于 i=2 到 30 步骤 2
接下来 执行这个循环中的语句: 30 Slip 2 28,除以 2 得到 14,四舍五入到 14,加上 1,即 15
另一个例子:对于 i=2 到 100 步骤 5
将执行此循环中的下一个语句:100 2 98,除以 5,四舍五入为 19,然后加到 1,即 20 倍。
-
a+=i,即 a=a+i 第一个 i=1 a=0+1 第二个 i=2 a=1(这个 1 是最后一个 1=0+1 中的 1) +2
所以是 1+2+3......10=45