遞歸算法之階乘代碼實現與非遞歸實現


  求一個自然數n的階乘,也非常適合用遞歸的方式實現。當然,所有的遞歸都可以用非遞歸的方式來實現,只是在代碼結構上將顯得啰嗦和復雜。現代編譯器對遞歸函數的調用開銷已經大幅優化,因此,對於類似漢諾塔等問題的求解,用遞歸實現非常簡潔明了,並且易於閱讀和理解。

  本文給出自然數n的階乘的遞歸與非遞歸求解算法代碼實現。語言為dart語言。

 1 int factorial(int n) {  2   if (n < 0) throw StateError('n cannot be < 0!');  3   return n == 0 ? 1 : n * factorial(n - 1);  4 }  5 
 6 int factorialNonrecursive(int n) {  7   if (n < 0) throw StateError('n cannot be < 0!');  8   var result = 1;  9   while (n > 0) result *= n--; 10   return result; 11 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM