[问题] 大数问题(费氏数列计算) (似乎已解决?)

楼主: ddchris (克里斯)   2017-07-18 17:49:33
开发平台(Platform): (Ex: Win10, Linux, ...)
Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
Visual studio 2017
问题(Question):
当测试值小时执行都蛮正常
但是当 N>650(第650项) 或 W>450(阵列数字位数)时会出现执行错误讯息(不知为何?)
错误结果(Wrong Output):
发生未处理的例外状况: 0xC00000FD: Stack overflow (参数: 0x00000000,
0x01202000)。
程式码(Code):(请善用置底文网页, 记得排版)
http://ideone.com/KqN9Qq
补充说明(Supplement):
想法是利用二维矩阵纪录每一个费氏数列的值(由左而右)
最后答案再由右而左反著印出来
自学C++的程式超新手
还请各位大神鞭小力一点... 感谢!!
作者: Zero0910 (みくに最高≧▽≦)   2017-07-18 17:57:00
stack空间不够你放这么大的阵列啦 请用new/delete去配置内存空间置底十三诫第10点
作者: Yshuan (倚絃)   2017-07-18 19:37:00
你只需要N-2跟N-1去算第N项 从0到N-3的空间根本不用
作者: remizu (remizu)   2017-07-18 19:41:00
bad_alloc exception是new失败所产生的 通常是要太多内存 改用Y大的方法就可以解决
作者: moebear (萌熊)   2017-07-18 19:43:00
我建议做二维动态阵列new一次 然后把它截成二维的样子https://goo.gl/WSbTH2 像是这个(三)前面的丢掉会算太久吧
作者: Littlechozy (キミに100%)   2017-07-18 21:09:00
F20000不超过6000位,如果用1个int表示10000,一个数要1200个int,以内存有500MB来看,可以算看看

Links booklink

Contact Us: admin [ a t ] ucptt.com