亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何使用c++ stack類進行遞歸

c++
小樊
82
2024-09-25 08:31:17
欄目: 編程語言

C++的stack類并不支持遞歸,因為它的主要作用是后進先出(LIFO)的數據結構,用于存儲一系列的元素,并只能在其一端(稱為棧頂)進行插入和刪除操作。

如果你想在遞歸函數中使用類似棧的功能,你可以使用C++的STL庫中的stack類,或者自己定義一個棧類。

以下是一個簡單的自定義棧類的例子:

#include <iostream>
#include <vector>
using namespace std;

template <typename T>
class Stack {
private:
    vector<T> data;
public:
    void push(T val) {
        data.push_back(val);
    }
    T pop() {
        if (isEmpty()) {
            throw runtime_error("Stack is empty");
        }
        T val = data.back();
        data.pop_back();
        return val;
    }
    T top() {
        if (isEmpty()) {
            throw runtime_error("Stack is empty");
        }
        return data.back();
    }
    bool isEmpty() {
        return data.empty();
    }
};

int factorial(int n) {
    Stack<int> s;
    s.push(1);
    while (n > 1) {
        s.push(n);
        n = n - 1;
    }
    int result = 1;
    while (!s.isEmpty()) {
        result = result * s.pop();
    }
    return result;
}

int main() {
    cout << factorial(5) << endl;
    return 0;
}

在這個例子中,我們定義了一個模板類Stack,它有push、pop、top和isEmpty等方法。然后在factorial函數中,我們使用Stack來存儲遞歸調用的結果,以實現遞歸計算階乘的功能。

0
邮箱| 达孜县| 咸宁市| 禹城市| 炎陵县| 株洲市| 应用必备| 从江县| 宜丰县| 板桥市| 渝中区| 犍为县| 墨江| 高淳县| 垫江县| 鸡东县| 休宁县| 上饶市| 洛浦县| 公主岭市| 滨海县| 翁源县| 临武县| 许昌县| 建始县| 鄂伦春自治旗| 宁安市| 肃宁县| 逊克县| 芒康县| 云霄县| 准格尔旗| 黔西县| 莆田市| 盘山县| 晴隆县| 建昌县| 吴旗县| 高阳县| 华宁县| 合水县|