根據運行的環(huán)境,操作系統(tǒng)可以分為桌面操作系統(tǒng),手機操作系統(tǒng),服務器操作系統(tǒng),嵌入式操作系統(tǒng)等。 遞歸和迭代 學習技術之路還有很長的路要走 首先,我們查詢百度百科的定義. 是指由功能,過程,子例程直接或間接在運行的程序中調用自身引起的重入現象. 在計算機編程中,遞歸指的是一個過程: 一個函數不斷地對其自身進行引用,直到知道所引用的對象為止. 重復反饋過程的活動通常旨在達到所需的目標或結果. 該過程的每次迭代都稱為“迭代”,并且每次迭代的結果都將用作下一次迭代的初始值. 感謝您的定義,這令人頭痛嗎?閱讀后,它看起來似乎可以理解但不是很容易理解嗎? 接下來,讓我們一起了解遞歸和迭代. 遞歸圖片 遞歸: 從問題開始,即從頂層開始,深入最簡單的問題(底層解決方案),獲得答案,如果完成,則提交,如果尚未完成,請返回再次使用上一層,使用底層解決上層問題,然后逐層返回頂層. 它既關注當前狀態(tài),也關注先前的狀態(tài),并且不知道其將來的狀態(tài)是否正在運行,但是必須返回到先前的狀態(tài). 示例: 給數字100,然后從1到100求和. 如果您想遞歸解決問題:
static int recursion(int i){ if(i == 1 || i == 2){ 返回1; } 其他{ 返回遞歸(i-1)+遞歸(i-2); //第三項等于最后兩項的總和 } } 有無數經典的遞歸算法,例如各種二叉樹方法. 雖然它可以減少代碼量,但它也帶給人們找到退出的樂趣遞歸和迭代的區(qū)別,但是它也占用了大量內存,并且還會導致運行時間增加. 較差的遞歸算法對計算機造成的后果更加困難. 閱讀遞歸后,您渴望看到迭代嗎? Jacobi迭代算法 迭代: 從最簡單的問題開始,形成答案后,比較需求是否已完全迭代,如果沒有,則繼續(xù)迭代直到找到解決方案. 在此過程中,有一個新的解決方案可以覆蓋舊的解決方案. 直接覆蓋意味著它僅關注當前狀態(tài),而不返回或影響先前或將來的狀態(tài). 它只會產生當前結果,并返回最終結果,直到迭代結束. 插圖: 歐幾里得算法(a和b的最大公約數= a和mod b的最大公約數): / *旋轉相分方法* / public static int gcd_2(int a,int b){ 如果(a <0 ||="" b="">0><0) *防止錯誤*="">0)> 返回0; int temp; / * b始終代表較小的數字,如果不是,則交換a,b的值* / 同時(b> 0){ temp = a%b; a = b; b =溫度; } 返回a; } 斐波納契數列: / *斐波那契數列* / public static int fibonacci(int n){ 如果(n <> 返回0; if(n == 1 || n == 2)/ *特殊值不迭代* / 返回1; int f1 = 1,f2 = 1,fn = 0; / *迭代變量* / int i; for(i = 3; i <= n;="" i="" ++){/="" *使用i的值限制迭代次數*="">=> fn = f1 + f2; f1 = f2; // f1和f2向前迭代遞歸和迭代的區(qū)別,其中f2在f1前面 f2 = fn; } 返回fn; } 摘要: 兩者之間的區(qū)別在于您自稱自己并用新的替換舊的. 也可以說這沒有什么區(qū)別,因為根本沒有人. 現在,兩者的主要概念不在同一個領域,而第二個也有部分相交,都是為了找到出口并獲得解決方案. 遞歸: 給自己打電話,一步一步地找到出口,而出口可能不是解決方案. 迭代: 用新的替換舊的,導出必須是解決方案.
|
溫馨提示:喜歡本站的話,請收藏一下本站!