Recursive | 技術視野洞察 - Dennis的專業視角 >

費氏數列

為了讓非資工的同仁理解何謂遞迴 為了讓非資工的同仁理解何謂遞迴,特地撰寫此範例程式練功用。是一個簡單又可以理解其他議題的好範例。 使用三個變數的好處是,簡潔節省執行時間。 使用遞迴部分,讓人理解遞迴在執行時會多出其他系統資源成本。 順便知道,原來C# int 會出現溢位(overflow)。可以用來探討基本基料型態的數值範圍。 微軟官方文件之整數數數值型別 (C# 參考) // For 迴圈版本 static void Main(string[] args) { int loopCnt = 100; ulong bef2 = 0; // 前二個數 ulong bef1 = 1; // 前一個數 ulong currentNumber = 0; // 目前的數 //迴圈版本 Console.WriteLine($"{bef2}"); Console.WriteLine($"{bef1}"); for (int i = 3; i <= loopCnt; i++) { currentNumber = bef2 + bef1; //算出目前的數 bef2 = bef1; // 將前一個數移至前二個數 bef1 = currentNumber; // 將目前的數移至前一個數 Console.WriteLine($"{currentNumber}"); } //遞迴版本呼叫 for (int idx = 0 ; idx <= 100; idx++) Console.WriteLine($"{idx}-{Fibonacci(idx)}"); } /// <summary> /// 費式級數到 12200160415121876738 overflow,其它程式語言應該不會 /// </summary> /// <param name="num"></param> /// <returns></returns> private static int Fibonacci(int num) { if (num == 0) return 0; if (num <= 2) return 1; return Fib(num - 1) + Fib(num - 2); }

2022-04-23 · 1 分鐘 · 361 字 · Dennis