首页 > 互联资讯 > 网络资讯  > 

你在编程竞赛中曾经犯过哪些令人窒息的错误?

大二有一次,题目的意思是,给了数列An的递推式,要求对任意输入n,输出An。

计算机系学渣:递归,结果毫不意外地得到一个Time Limit Exceeded。

计算机系学霸:搜到通项公式,直接按通项公式计算,一次Accept。

数学系学酥(就是我):掏出草稿纸开始手撕生成函数,五分钟后算出通项公式,检查无误以后按通项公式计算,结果得到一个Wrong Answer。

当时百思不得其解,通项公式应该是正确的,检查了好几遍也不知道错在哪。直到两年后选修了计算代数的课程,才反应过来,不能按照纯数学的思维来理解计算机的计算过程。具体来说,我的代码中会出现类似“根号5的平方不等于5”的问题,当n较大的时候,舍入误差会导致错误答案。

正确的做法应该是把可能出现的无理数当成一个符号,重新定义和它有关的运算。或者用数学语言来说,计算机无法处理真正意义的R上的运算,而在Q中不足以完成所要的运算,这时应该改为在扩域Q(根号5)中考虑。

你在编程竞赛中曾经犯过哪些令人窒息的错误?由讯客互联网络资讯栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“你在编程竞赛中曾经犯过哪些令人窒息的错误?