你在编程竞赛中曾经犯过哪些令人窒息的错误?
- 网络资讯
- 2024-09-25 23:21:02
大二有一次,题目的意思是,给了数列An的递推式,要求对任意输入n,输出An。
计算机系学渣:递归,结果毫不意外地得到一个Time Limit Exceeded。
计算机系学霸:搜到通项公式,直接按通项公式计算,一次Accept。
数学系学酥(就是我):掏出草稿纸开始手撕生成函数,五分钟后算出通项公式,检查无误以后按通项公式计算,结果得到一个Wrong Answer。
当时百思不得其解,通项公式应该是正确的,检查了好几遍也不知道错在哪。直到两年后选修了计算代数的课程,才反应过来,不能按照纯数学的思维来理解计算机的计算过程。具体来说,我的代码中会出现类似“根号5的平方不等于5”的问题,当n较大的时候,舍入误差会导致错误答案。
正确的做法应该是把可能出现的无理数当成一个符号,重新定义和它有关的运算。或者用数学语言来说,计算机无法处理真正意义的R上的运算,而在Q中不足以完成所要的运算,这时应该改为在扩域Q(根号5)中考虑。
你在编程竞赛中曾经犯过哪些令人窒息的错误?由讯客互联网络资讯栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“你在编程竞赛中曾经犯过哪些令人窒息的错误?”