首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

「小蜜蜂」大數問題:斐波那契變體與 unsigned long long 選型技巧

     編輯:關於C語言

「小蜜蜂」大數問題:斐波那契變體與 unsigned long long 選型技巧

題目:蜜蜂從 a 飛到 b(a < b < 50),只能向前飛 1 或 2 步,求路徑數。本質是斐波那契:f(n) = f(n-1) + f(n-2),f(1)=1, f(2)=2。

迭代實現(避免遞歸棧溢出)

unsigned long long ways(int n) {
    if (n == 1) return 1;
    if (n == 2) return 2;
    unsigned long long a = 1, b = 2, c;
    for (int i = 3; i <= n; i++) {
        c = a + b; a = b; b = c;
    }
    return b;
}

類型選型避坑

總結

  • 優先用迭代替代遞歸(尾遞歸優化不穩定)。
  • 類型由小到大:int → unsigned → unsigned long long,按需升級。
  • %I64d (Windows) / %llu (Linux) 輸出 unsigned long long。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類型最大值適用範圍
int2.1e9f(45) 溢出
unsigned int4.2e9f(46) 溢出
unsigned long long1.8e19覆蓋 f(93),本題 n<50 綽綽有餘