主题:[讨论]再发:递归调用函数后输出数据不对,请老师们赐教。多谢多谢!!!
wangtao88
[专家分:0] 发布于 2011-01-22 17:50:00
问题:该程序是我写的一个筛选程序(写的不好)在未递归调用前输出的数据是okok=154(在程序的第1453行)。递归前该程序没有问题数据准确我已经调试过。但在递归调用ssl009( a, jtyyxy);在第1750行函数后输出却是1449。理论上应该比未递归前154的数小很多才对。但递归调用后数据却大了许多明显是错误的。但我查来查去没找出问题在哪里?请老师们赐教我在此先谢谢了!!!
为了方便大家调试,我也把txt读入文件也一并发上去。
详见附件
[em10]
回复列表 (共2个回复)
沙发
eastcowboy [专家分:25370] 发布于 2011-01-23 08:51:00
这真是一个可怕的程序,函数和变量的命名实在是太难认了。
递归的意思是一个函数(直接或者间接的)调用自己。但是楼主所说的ssl009这个函数,并没有满足这一条定义。不知道楼主所说的递归是什么。
1750行:
if(okok>100);
ssl009( a, jtyyxy); //以下重新调用函数筛选
ssl010( b, jzyy1234HH);
这里如果if不成立,则仍然会执行ss1010,因为没有用大括号“{}”。因为函数名字实在太难认,不知道楼主到底想怎么做,所以也不知道这里写错了没有。
板凳
wangtao88 [专家分:0] 发布于 2011-01-23 10:17:00
谢谢楼上的回复。
你说的那个地方就是加上大括号{}输出的结果也是不对。
该程序是想把筛选出的结果okok=154.再重新回到程序的ssl009( a, jtyyxy)位置再做一次重新筛选 (即:递归调用 ssl009( a, jtyyxy)。
我把程序中读入的txt文件发上去,能方便大家可以运行程序调试下。 (因回复不能发送附件,我重新发帖把读入的txt文件发上去)
我来回复