注册 登录
编程论坛 C++教室

新手求教 为什么全局变量从函数中出来值没有变

qq826647235 发布于 2016-09-21 22:53, 2164 次点击
新手求教 为什么全局变量从函数中出来值没有变

程序如下
#include<iostream>

using namespace std;

int c,n;
int Max;
int w[15],p[15];
void dfs(int position,int Now_weight,int Now_value)
{
    if(position<n)
    {
        dfs(position+1,Now_weight,Now_value);
        Now_weight+=w[position];
        if(Now_weight>c)
        {
            if(Now_value>Max)
                Max=Now_value;
        }
        else
        {
            Now_value+=p[position];
            dfs(position+1,Now_weight,Now_value);
        }
    }
    else
    {
        if(Now_value>Max)
        {
            Max=Now_value;
        }
    }
}

int main()
{

    int Max,a;
    while(1)
    {
        cin>>n>>c;
        if(n==0&&c==0) break;
        Max=0;
        for(a=0;a<n;a++)
        {
            cin>>w[a];
        }
        for(a=0;a<n;a++)
        {
            cin>>p[a];
        }
        dfs(0,0,0);
        cout<<Max<<endl;
    }
    return 0;
}

0 1背包问题用递归做的。
调试完发现在函数中Max确实变为1了。结果输出Max还是0,为什么。。。
2 回复
#2
仰望星空的2016-09-22 09:09
main函数里面的Max是局部变量,你之前定义的Max是全局变量,调用时候变成1了,可能是显示的是局部变量那个变成1了,建议你可以换个全局变量试试~
#3
仰望星空的2016-09-22 09:18
main函数里面的Max是局部变量,你之前定义的Max是全局变量,调用时候变成1了,可能是显示的是局部变量那个变成1了,建议你可以换个 变量表示一下
1