之前写一个机试题,用的C++,有一个递归,想用一个全局变量记录一个总和,写的是 static int sum=0
造成每次过完一个用例,第二个都会报错,原因就是机试题的测试用例基本都是一个程序连续调用的,例如:
fun(参数,参数、、、) //用例一
fun(参数,参数,、、)//用例二
、、、、
所以当跑完第一个用例时,sum变为了4,执行第二个用例,sum就不是从0开始,而是从4开始了,也就造成了错误。
今天在leetcode上写java,也遇到了同样的问题。
由于习惯了写c,在java中经常使用 public static这样的申明来表示“全局变量”
也就造成了上述错误,解决办法是使用正常的public int sum这样的申请,当要使用时,使用this.sum来使用
在编程竞赛或在线评测平台如LeetCode上使用递归时,若采用全局变量记录中间状态,需谨慎处理。本文通过C++和Java实例,解析了为何在多个连续测试用例下,全局变量会导致错误,并提出了解决方案。

被折叠的 条评论
为什么被折叠?



