写机试题不要用静态全局变量

在编程竞赛或在线评测平台如LeetCode上使用递归时,若采用全局变量记录中间状态,需谨慎处理。本文通过C++和Java实例,解析了为何在多个连续测试用例下,全局变量会导致错误,并提出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前写一个机试题,用的C++,有一个递归,想用一个全局变量记录一个总和,写的是 static int sum=0

造成每次过完一个用例,第二个都会报错,原因就是机试题的测试用例基本都是一个程序连续调用的,例如:

fun(参数,参数、、、) //用例一

fun(参数,参数,、、)//用例二

、、、、

所以当跑完第一个用例时,sum变为了4,执行第二个用例,sum就不是从0开始,而是从4开始了,也就造成了错误。

今天在leetcode上写java,也遇到了同样的问题。

由于习惯了写c,在java中经常使用 public static这样的申明来表示“全局变量”

也就造成了上述错误,解决办法是使用正常的public int sum这样的申请,当要使用时,使用this.sum来使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值