當前位置:首頁 » 操作系統 » 演算法死循環

演算法死循環

發布時間: 2022-05-03 08:56:51

㈠ C語言中什麼叫死循環怎麼避免

死循環就是不停的執行for循環,while循環。
避免死循環要看下死循環是如何產生的,
例如在C語言程序中,語句「while(1)printf("*");」就是一個死循環,運行它將無休止地列印*號。
產生死循環的情況有:
▪ 邏輯錯誤
▪ 變數處理錯誤
▪ 奧爾德森循環
▪ 無窮遞歸

你可以看下這些死循環出現的原因,然後在開發中避免一下。

㈡ matlab演算法進入死循環

並不是死循環,只是循環的次數比較多,你沒有等到它算完而已。

當你強制中斷時,也未必每次都在同一個地方,比如這行代碼

h=h+eval(G);

就有兩處,一處在 for k=1:100 循環內,另一處在 for k=2:e,for r=1:100 的循環內。除了這兩行之外,還有一行比較耗時間,是 u1=u1+eval(g)*Z(:,j)。

這三行代碼都是調用了符號運算,而且循環次數比較多(粗略估算,分別為30萬、120萬、30萬次),差不多99%的運算時間都消耗在這三行代碼上了,所以,當你強制中斷時,剛好落在這三行上的概率非常大。

再耐心等一會兒,應該能夠算完的。不過,就代碼而言,應該可以進一步優化的,不是必須要等那麼久的。

㈢ 演算法的有窮性和死循環

看你寫出while(1),那麼你一定是在用程序來實現演算法。

首先你要明確知道演算法不只有程序實現。

其次,你要了解演算法在計算機系統中處於哪個層次?

計算機系統實現

你可以了解一下計算機系統的演變,目前的計算機系統都是按照這種層次轉換去設計的。

a)問題,也就是我們經常項目中遇到的需求文檔,這些都是用自然語言來描述的,什麼是自然語言?就是漢語、英語等這些人說的話。

b)演算法,演算法我們可以用自然語言,流程圖,偽代碼等來描述,這就是所謂項目詳細設計,演算法的大特性:

有窮性:一個演算法在執行有限步驟後,在有限時間內能夠實現的。

明確性:演算法中每一個步驟的表述都應該是確定的、沒有歧義的語句。

可計算性:演算法的可行性就是指每一個步驟都能夠有效地執行,並得到確定的結果,而且能夠用來方便地解決一類問題。

如果演算法違背了這些特性那就不叫演算法,這是前人以及眾人都認可的。

c)程序,程序就是我們開始碼代碼了,就是你要按照詳細設計去用代碼實現,這個時候你發現 詳細設計裡面寫了一段話 讓你無限循環即(while(1)),你會不會去揍這個寫詳細設計的?

後面我就不多說了,總結起來就是 程序不等價於演算法,演算法可以用程序來實現,程序的設計包含演算法,所以你說你的while(1)和演算法有窮性矛盾,是八竿子打不到的事情。

㈣ 該演算法陷入死循環,如何改正

1、augmentpath,直譯為「增廣路徑」,其思想大致如下:原有網路為G,設有一輔助圖G',其定義為V(G')=V(G),E(G')初始值(也就是容量)與E(G)相同。每次操作時從Source點搜索出一條到Sink點的路徑,然後將該路徑上所有的容量減去該路徑上容量的

㈤ C語言中的死循環是什麼意思啊

死循環是循環條件永遠能夠得到滿足,循環永遠進行下去。這種循環一旦進入就出不來了
所以要設置跳出條件

㈥ 死循環,死遞歸和死鎖對CPU的消耗有什麼異同點

死循環,死遞歸和死鎖對CPU的消耗基本相同,但是產生的原因是不一樣的。
一、死循環。
例如在VB語言程序中,下列語句:
Do While i=1
print "*"
Loop
就是一個死循環,運行它將無休止地列印*號。
不存在一種演算法,對任何一個程序及相應的輸入數據,都可以判斷是否會出現死循環。因此,任何編譯系統都不做死循環檢查。
在設計程序時,若遇到死循環,我們可以通過按下Ctrl+Pause/Break的方法,結束死循環。
然而,在編程中死循環並不是一個需要避免的問題,相反,在實際應用中,經常需要用到死循環。例如,我們使用的Windows操作系統下的窗口程序中的窗口都是通過一個叫消息循環的死循環實現的。在單片機、嵌入式編程中也經常要用到死循環。在各類編程語言中,死循環都有多種實現的方法,以C語言為例,可分別使用while.for,goto實現。
二、死鎖。
兩個或兩個以上的進程在執行過程中,由於競爭資源或者由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處於死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進程稱為死鎖進程。
計算機系統中,如果系統的資源分配策略不當,更常見的可能是程序員寫的程序有錯誤等,則會導致進程因競爭資源不當而產生死鎖的現象。
在兩個或多個任務中,如果每個任務鎖定了其他任務試圖鎖定的資源,此時會造成這些任務永久阻塞,從而出現死鎖。例如:事務A 獲取了行 1 的共享鎖。事務 B 獲取了行 2 的共享鎖。
排他鎖,等待事務 B 完成並釋放其對行 2 持有的共享鎖之前被阻塞。
排他鎖,等待事務 A 完成並釋放其對行 1 持有的共享鎖之前被阻塞。
事務 B 完成之後事務 A 才能完成,但是事務 B 由事務 A 阻塞。該條件也稱為循環依賴關系:事務 A 依賴於事務 B,事務 B 通過對事務 A 的依賴關系關閉循環。
三、死機及其對策。
無論是死循環還是死鎖,都會造成電腦死機現象。
›電腦系統在工作中,有時候會出現滑鼠停滯、鍵盤不能輸入命令等情況,這時的系統已經不能接收任何命令,這種情況被稱為死機,死機可能是多種原因造成的,比如同時運行了過多的應用程序,程序的使用方法錯誤,電腦中某一硬體的損壞(比如硬碟或者內存)等都可能引起死機。解決的常用方法有:
同時按下鍵盤上的控制鍵加換檔鍵加刪除鍵,在顯示的列表中單擊【啟動任務管理器】命令,彈出【任務管理器】對話框,單擊出現問題的程序,再單擊【結束任務】按鈕,所選程序立即結束運行。在大多數情況下,都可以通過上述方法關閉已經失去響應的程序,並且可以繼續在Windows10中操作。
如果鍵盤已經不能輸入任何命令,可按下機箱上的復位鍵,幾秒鍾後電腦將重新啟動。
如果機箱上沒有復位鍵,可以直接按住機箱上的電源開關幾秒鍾,關閉電腦電源,稍後,再按機箱上的電源開關重新啟動電腦即可。

㈦ 簡單的遞歸演算法,為什麼程序運行會死循環

遞歸死循環肯定是中止條件錯了!看了你的代碼while (i < len) {
if (key == a[i]) {
return i;
}
這個地方造成死循環了!因為i的值永遠是0;並且a[0]的值與key不相等;所以死循環在這里!

㈧ 死循環怎麼解

死循環

(無法靠自身的控制終止的循環)
編輯
在編程中,一個無法靠自身的控制終止的程序稱為「死循環」。
例如在C語言程序中,語句「while(1)printf("*");」就是一個死循環,運行它將無休止地列印*號。
不存在一種演算法,對任何一個程序及相應的輸入數據,都可以判斷是否會出現死循環。因此,任何編譯系統都不做死循環檢查。
在設計程序時,若遇到死循環,我們可以通過按下Ctrl+Pause/Break的方法,結束死循環。
然而,在編程中死循環並不是一個需要避免的問題,相反,在實際應用中,經常需要用到死循環。例如,我們使用的Windows操作系統下的窗口程序中的窗口都是通過一個叫消息循環的死循環實現的。在單片機、嵌入式編程中也經常要用到死循環。在各類編程語言中,死循環都有多種實現的方法,以C語言為例,可分別使用while.for,goto實現。

㈨ 「演算法和程序都不能是無窮的,否則會進入死循環」 判斷是否正確

錯誤

剛上完課,演算法是可以無窮的,程序不能無窮。
比如算π的演算法就是無窮的,人類算了這么久仍讓沒有算明白π是多少,對吧
程序不能無窮這個就不用多說了吧,都無窮了,這程序還有毛線用處,永遠都沒算完,永遠也得不到你要的結果,這能叫程序嗎?
那麼有人問了,這個π不是無窮的演算法,怎麼用程序算的。
當然π也是一步一步算出來唄,演算法雖然無窮,我們大概先知道了這個程序算多少位,大約是個什麼復雜度,然後根據電腦的情況先算能算出來的部分,對吧!
不可能一下一直算,那再牛逼的超級計算機也永遠算不完。

熱點內容
傳奇腳本刷怪 發布:2024-10-06 11:57:47 瀏覽:261
c語言輸入小寫輸出大寫 發布:2024-10-06 11:49:57 瀏覽:361
金立手機伺服器異常是什麼原因 發布:2024-10-06 11:49:48 瀏覽:699
python多線程假的 發布:2024-10-06 11:37:09 瀏覽:723
自己動手構造編譯 發布:2024-10-06 11:35:11 瀏覽:550
c語言編譯器win10 發布:2024-10-06 11:33:35 瀏覽:971
安卓手機里的自動備份是什麼 發布:2024-10-06 11:30:16 瀏覽:714
想買電腦配置要注意哪些 發布:2024-10-06 11:21:50 瀏覽:541
滴滴雲存儲 發布:2024-10-06 11:17:37 瀏覽:767
精通android游戲開發 發布:2024-10-06 11:16:54 瀏覽:801