-
理論上每次都是計算的,但實際上編譯器會優化這個,直接用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