遞歸和非遞歸的區(qū)別 求遞歸轉化為非遞歸的方法?
求遞歸轉化為非遞歸的方法?理論上,所有遞歸程序都可以由非遞歸程序實現(xiàn)。循環(huán)方法是所有遞歸到非遞歸轉換中最理想的方法,它可以使代價最小化。然而,它也是最復雜的分析,簡單的遞歸可以用這種方式處理。為了便于
求遞歸轉化為非遞歸的方法?
理論上,所有遞歸程序都可以由非遞歸程序實現(xiàn)。循環(huán)方法是所有遞歸到非遞歸轉換中最理想的方法,它可以使代價最小化。然而,它也是最復雜的分析,簡單的遞歸可以用這種方式處理。為了便于理解,這里有一個最簡單的例子:尋找n的階乘。遞歸方法:int factorial(int n){if(n> 1){return n*factorial(n-1)//遞歸函數(shù)調用}else if(n==1){return 1//遞歸退出}else{return error//報告輸入錯誤}非遞歸方法:factorial(int n){int k=1//增量int t=1//臨時結果while(k!=n){t*=k}Return t}
遞歸算法是一種直接或間接調用自身的算法。在計算機程序設計中,遞歸算法對于解決一大類問題是非常有效的。它往往使算法的描述簡潔易懂。遞歸是在過程或函數(shù)中調用自身。在使用遞歸策略時,必須有一個顯式的遞歸結束條件,稱為遞歸退出。遞歸算法通常非常簡單,但效率較低。因此,不建議使用遞歸算法來設計程序。在遞歸調用過程中,系統(tǒng)打開一個棧來存儲每一層的返回點和局部數(shù)量。太多的遞歸很容易導致堆棧溢出。