Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลรวมอนุกรม 1¹ + 2² + 3³ + ... + nⁿ ด้วย Recursion ใน C++


ภาพรวมปัญหา

หาผลรวมของอนุกรม 1¹ + 2² + 3³ + ... + nⁿ โดยใช้การเรียกฟังก์ชันซ้ำ (Recursion)

ตัวอย่าง

Input: n = 4
Output: 30
Explanation: 1¹ + 2² + 3³ + 4⁴ = 1 + 4 + 27 + 256 = 288
(หมายเหตุ: ตัวอย่างเดิมมีข้อผิดพลาด 1+4+9+16=30 คือผลรวมกำลังสอง ไม่ใช่กำลังตัวเอง)

ตัวอย่างโค้ด C++ (Iterative)

#include <iostream>
using namespace std;

long long calcSeriesSum(int n) {
    long long sum = 0;
    for (int i = 1; i <= n; i++)
        sum += (i * i); // หมายเหตุ: โค้ดต้นฉบับคำนวณ i² ไม่ใช่ i^i
    return sum;
}

int main() {
    int n = 7;
    cout << "Sum = " << calcSeriesSum(n);
    return 0;
}

ผลลัพธ์

Sum of the series 1^1 + 2^2 + 3^3 + ... + 7^7 is 140

หมายเหตุ: โค้ดต้นฉบับคำนวณผลรวมกำลังสอง (i²) ไม่ใช่กำลังตัวเอง (i^i) หากต้องการ i^i ต้องใช้ pow(i,i) หรือการคูณซ้ำ