如何在c中打印递归中使用的结构?

如何在c中打印递归中使用的结构?,c,recursion,struct,C,Recursion,Struct,我编写了一个名为rucksack的函数,该函数采用线性列表和限制重量的限制器。该函数返回您可以选择的所选项目的最大成本,而不超过4500的重量 #include <stdio.h> struct item { int weight; // Artikelgewicht in Gramm int value; // Artikelwert in Euro int stock; // Vorhandene Ar

我编写了一个名为
rucksack
的函数,该函数采用线性列表和限制重量的限制器。该函数返回您可以选择的所选项目的最大成本,而不超过4500的重量

#include <stdio.h>

struct item {
    int weight;         // Artikelgewicht in Gramm
    int value;          // Artikelwert in Euro
    int stock;          // Vorhandene Artikelmenge
    struct item *next;
};

struct item laptop = {1500, 1000, 3, NULL};
struct item tablet = { 700, 300, 2, &laptop};
struct item mobile = { 180, 500, 2, &tablet};
struct item *items = &mobile;

int max(int a,int b)
{
    return a > b ? a : b ;
}

int rucksack ( struct item* item , int limit) 
{
    if (item == NULL)
        return 0 ;
    int sum = 0 ;
    for (int i = 0 ; i<= item->stock && i * item->weight<=limit ; i++)
        sum = max(sum, i * item->value + rucksack (item->next , limit - i*item->weight )) ;
    return sum;
}

int main() {

    printf("%d", rucksack(items, 4500));
}
#包括
结构项{
int-weight;//Artikelgewich,单位为gram
int value;//Artikelwert(欧元)
int stock;//Vorhandene Artikelmenge
结构项*下一步;
};
结构项laptop={1500,1000,3,NULL};
结构项tablet={700、300、2和笔记本电脑};
struct item mobile={180500,2和tablet};
结构项*项=&mobile;
最大整数(整数a,整数b)
{
返回a>b?a:b;
}
整数背包(结构项目*项目,整数限制)
{
如果(项==NULL)
返回0;
整数和=0;
对于(INTI=0;istock&&i*项目->重量值+背包(项目->下一步,限制-i*项目->重量));
回报金额;
}
int main(){
printf(“%d”,背包(4500件);
}

我想知道选择了哪个项目组合,但我不知道如何在递归中实现它。有人能帮忙吗?

这是一个线性列表<代码>项目指向移动,而
移动->下一步
指向
平板电脑
平板电脑->下一步
指向笔记本电脑。对不起,是的,现在更有意义了。什么是你的代码做得不对?它不是在达到限制时停止吗,等等?它完全停止并返回3300,但我想打印哪种项目组合。选择了哪些项目,使其值相加后得到3300个结果。然后,您需要在
结构项目
中包含一个
char*name
成员,该成员在
背包
中提供当前处理项目的名称,看起来您需要在循环后输出
名称
总和
在你回来之前。(或者当您输入函数并在结尾处输入
sum
时,输出
name
)。您将希望看到(即使是java,它也有相关信息)