首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

斐波那契數列前 10 項和計算:C++ 多種實現與水仙花數補充

     編輯:程式設計綜合問答

斐波那契數列定義

F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2) (n≥2)。
前 10 項(索引 0~9):0, 1, 1, 2, 3, 5, 8, 13, 21, 34。
**和 = 88**。

C++ 實現方式

1. 迭代法(最推薦,O(n) 時間,O(1) 空間)

#include <iostream>
using namespace std;

int main() {
    int n = 10;
    long long a = 0, b = 1, sum = a + b; // F0+F1
    for (int i = 2; i < n; ++i) {
        long long c = a + b;
        sum += c;
        a = b; b = c;
    }
    cout << \"前 \" << n << \" 項和 = \" << sum << endl; // 88
    return 0;
}

2. 遞歸 + 備忘錄(教學用,無優化則指數級)

long long fib(int n, vector<long long>& memo) {
    if (n <= 1) return n;
    if (memo[n] != -1) return memo[n];
    return memo[n] = fib(n-1, memo) + fib(n-2, memo);
}
// 主程式累加 fib(0)..fib(9)

3. 矩陣快速冪(O(log n),大 n 時優勢明顯)

// [[1,1],[1,0]]^n = [[F(n+1),F(n)],[F(n),F(n-1)]]
// 適合 n > 1e6 等大規模計算

水仙花數(三位數自戀數)補充

定義:三位數 abc 滿足 a³ + b³ + c³ = abc。
四個水仙花數:**153, 370, 371, 407**。

C++ 求解

#include <iostream>
using namespace std;

int main() {
    for (int i = 100; i < 1000; ++i) {
        int a = i / 100, b = (i / 10) % 10, c = i % 10;
        if (a*a*a + b*b*b + c*c*c == i)
            cout << i << ' ';
    }
    return 0;
}

總結

斐波那契前 10 項和為 **88**。迭代法最簡練高效。水仙花數僅 4 個,暴力枚舉即可。兩題均為經典入門演算法練習,重點在於**邊界條件正確**、**變數型別防溢位**(大 n 用 long long 或大整數庫)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved