JAYLEE900 2022-08-22 10:34 采纳率: 37.5%
浏览 12
已结题

如何以递归形式如何实现下述代码功能

如何将以下代码以递归形式实现,并且展示以下递归算法的逻辑和意义

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

vector<vector<vector<int>>> records;
vector<vector<int>> len_records;
vector<int> datas = { 1,2,3,4,5 };
int len = 0;


int main()
{
    len = 1;
    for (int i = 0;i < datas.size();i++)
    {
        vector<int> temp;temp.push_back(datas[i]);
        len_records.push_back(temp);
    }
    records.push_back(len_records);
    len_records.clear();


    len = 2;
    for (int i = 0;i < datas.size();i++)
    {
        for (int j = i+1;j < datas.size();j++)
        {
            vector<int> temp;temp.push_back(datas[i]), temp.push_back(datas[j]), len_records.push_back(temp);
        }
    }
    records.push_back(len_records);
    len_records.clear();


    len = 3;
    for (int i = 0;i < datas.size();i++)
    {
        for (int j = i + 1;j < datas.size();j++)
        {
            for (int k = j + 1;k < datas.size();k++)
            {
                vector<int> temp;temp.push_back(datas[i]), temp.push_back(datas[j]), temp.push_back(datas[k]);len_records.push_back(temp);
            }
        }
    }
    records.push_back(len_records);
    len_records.clear();


    len = 4;
    for (int i = 0;i < datas.size();i++)
    {
        for (int j = i + 1;j < datas.size();j++)
        {
            for (int k = j + 1;k < datas.size();k++)
            {
                for (int l = k + 1;l < datas.size();l++)
                {
                    vector<int> temp;temp.push_back(datas[i]), temp.push_back(datas[j]), temp.push_back(datas[k]), temp.push_back(datas[l]);len_records.push_back(temp);
                }
            }
        }
    }
    records.push_back(len_records);
    len_records.clear();


    len = 5;
    for (int i = 0;i < datas.size();i++)
    {
        for (int j = i + 1;j < datas.size();j++)
        {
            for (int k = j + 1;k < datas.size();k++)
            {
                for (int l = k + 1;l < datas.size();l++)
                {
                    for(int q=l+1;q<datas.size();q++)
                    {
                        vector<int> temp;temp.push_back(datas[i]), temp.push_back(datas[j]), temp.push_back(datas[k]), temp.push_back(datas[l]), temp.push_back(datas[q]);len_records.push_back(temp);
                    }
                }
            }
        }
    }
    records.push_back(len_records);
    len_records.clear();

    for (int i = 0;i < records.size();i++)
    {
        for (int j = 0;j < records[i].size();j++)
        {
            for (int k = 0;k < records[i][j].size();k++)
            {
                cout << records[i][j][k] << ",";
            }
            cout << " ";
        }
        cout << endl;
    }

    system("pause");

    return 0;
}



  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 8月30日
    • 创建了问题 8月22日

    悬赏问题

    • ¥15 c#如何使用scottplot给已画好的自定义热度图,增加一个一定的colorbar
    • ¥15 信贷平台.用户信用评估和风险评估怎么做,希望来个做过的Java.有合作的机会
    • ¥15 IMageEN获得图形顶点坐标的问题
    • ¥50 软件PC客户端抓包,获取http请求和响应
    • ¥15 手机被安装黑客软件怎么办?
    • ¥15 Windows C++ PaddleOcr 中文模型的训练方法
    • ¥15 c# 用scottplot画 以时间为纵坐标,数值为横坐标画曲线图
    • ¥15 手机应用程序安装异常
    • ¥15 grbl的G92修改MPos的问题。
    • ¥15 vue2中,Ant Design Pro s-table中,使用服务端排序怎么做