欣坚强 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 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码