碰到一个奇怪的现象,想请高手帮忙来看看是啥情况

实况灬天河 2018-08-02 06:12:38
代码如下:
#include<iostream>
#include<Windows.h>
using namespace std;

#include"baima.h"


int func(int value,int km)
{
if (value <= 1000)
{

cout << "当前煤剩余量可以装车一次拉完并抵达终点" << endl;
cout << "当前煤剩余量为:" << value << endl;
cout << "当前离开起点" << km << "公里" << endl;
return value + km - 1000;
}
else if ((value <= 2000))
{
km++;
value -= 3;
cout << "当前煤剩余量为:" << value << endl;
cout << "当前离开起点" << km << "公里" << endl;
func(value, km);
}
else
{
km++;
value -= 5;
cout << "当前煤剩余量为:" << value << endl;
cout << "当前离开起点" << km << "公里" << endl;
func(value, km);
}
}

//测试
int main()
{
int nsum = func(3000,0);
cout << "结果还剩" << nsum << "吨煤" << endl;
return 0;
}

运行结果正常.
图片传了半个小时没传上来,我就不传了。
现在异常是:
#include<iostream>
#include<Windows.h>
using namespace std;

#include"baima.h"


int func(int value,int km)
{
if (value <= 1000)
{

// cout << "当前煤剩余量可以装车一次拉完并抵达终点" << endl;
// cout << "当前煤剩余量为:" << value << endl;
// cout << "当前离开起点" << km << "公里" << endl;
return value + km - 1000;
}
else if ((value <= 2000))
{
km++;
value -= 3;
// cout << "当前煤剩余量为:" << value << endl;
// cout << "当前离开起点" << km << "公里" << endl;
func(value, km);
}
else
{
km++;
value -= 5;
// cout << "当前煤剩余量为:" << value << endl;
// cout << "当前离开起点" << km << "公里" << endl;
func(value, km);
}
}

//测试
int main()
{
int nsum = func(3000,0);
cout << "结果还剩" << nsum << "吨煤" << endl;
return 0;
}

我把输出的信息注释掉,返回的是2,或者1994563579.请问这是什么原因?
...全文
146 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
实况灬天河 2018-08-09
  • 打赏
  • 举报
回复
引用 6 楼 donjin9 的回复:
后面两个函数调用return漏了,release会出错的。
非常感谢,这确实需要引起注意了,以后。依你的意见,修改成这样就可以了。
#include<iostream>
//#include<Windows.h>
using namespace std;

#include"baima.h"


int func(int value,int km)
{
if (value <= 1000)
{

// cout << "当前煤剩余量可以装车一次拉完并抵达终点" << endl;
cout << "当前煤剩余量为:" << value << endl;
// cout << "当前离开起点" << km << "公里" << endl;
return value + km - 1000;
}
else if ((value <= 2000))
{
km++;
value -= 3;
// cout << "当前煤剩余量为:" << value << endl;
// cout << "当前离开起点" << km << "公里" << endl;
return func(value, km);
}
else
{
km++;
value -= 5;
// cout << "当前煤剩余量为:" << value << endl;
// cout << "当前离开起点" << km << "公里" << endl;
return func(value, km);
}
}

//测试
int main()
{
int nsum = 0;
nsum = func(3000, 0);
cout << "结果还剩" << nsum << "吨煤" << endl;
system("pause");
return 0;
}
donjin9 2018-08-06
  • 打赏
  • 举报
回复
后面两个函数调用return漏了,release会出错的。
实况灬天河 2018-08-06
  • 打赏
  • 举报
回复
或者进去了,但是没有返回结果。我用的是vs2015
实况灬天河 2018-08-06
  • 打赏
  • 举报
回复
引用 3 楼 somuchhope 的回复:
结果还剩532吨煤,测试正常,不要看输出,打断点看看结果。

很奇怪,程序没有进入到递归函数里面。
FoolCarpe 2018-08-03
  • 打赏
  • 举报
回复
调试看看呀,一步步看你的数据异常出来哪里
以免我忘记 2018-08-03
  • 打赏
  • 举报
回复
结果还剩532吨煤,测试正常,不要看输出,打断点看看结果。
冷风1023 2018-08-02
  • 打赏
  • 举报
回复
测试打印正常

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧