Wrong Answer,Memory Limit Exceeded

本文记录了在编程中遇到的一个递归错误,由于忘记在递归函数中添加返回语句导致不同编译器提交结果不同。C++提交时出现Wrong Answer或Memory Limit Exceeded,而g++则接受。分析指出,正确编写代码以避免依赖编译器自动修正的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误原因:

1.在递归的时候,递归函数中忘记加返回return。


1.1做题时遇到一个奇葩错误,把它记到这里,看代码:

代码1:错误,用c++提交wrong answer,但是用g++提交却accepted

int set_find(int d)
{
	if(set[d]<0)
		return d;
	set_find(set[d]);//这里递归时没有返回值,只有在结束条件时返回(即最后一层递归有返回值,前面的没有返回值)
}

上述代码在进行递归的时候,只有在递归结束时的最后一层返回一个值d,但是并没有把值带到前面的递归当中。

但是在vc中却运行正确,似乎自动加了个返回return(见下面正确代码2)。

这可能与编译器有关,当时那道题我没加return,

用c++提交wrong answer,但是用g++提交却accepted

(当时就感觉还是自己的代码有问题,终于在仔细检查之后还是找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值