欣坚强 2022-03-16 15:49 采纳率: 57.4%
浏览 66
已结题

为什么将while循环语句里的“res=0”改为“int res=0”则结果不同?

问题

img

输入

img

疑问
当while语句里写为res=0,则输出正确结果

img

但当while语句里写为int res=0;,则输出错误结果

img


在执行while语句时,不都是从上向下执行吗?并且都是让res=0,为什么会有不一样的结果?是因为在main里面,输出的默认为局部变量res吗

代码

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>

using namespace std;

int res;
int m,n;

void dfs(int t,int start,int state)
{
    if(state==n&&t==0) res++;
    
    if(state>=n) return;
    
    for(int i=start;i<=t;i++)
        dfs(t-i,i,state+1);
}

int main()
{
    int t;
    cin>>t;
    
    while(t--)
    {
        cin>>m>>n;
        
        res=0;
        dfs(m,0,0);
        
        cout<<res<<endl;
    }
    
    return 0;
}

  • 写回答

2条回答 默认 最新

  • ty94666 2022-03-16 16:14
    关注

    int res = 0 就是在while函数内部重新生成了一个res变量了,和函数外的res就没有关联了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月16日
  • 已采纳回答 3月16日
  • 创建了问题 3月16日

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置