箭指offer编程 不通过问题

您的代码已保存
编译错误:您提交的代码无法完成编译
In file included from 第2行:
./solution.h:58:2: error: control may reach end of non-void function [-Werror,-Wreturn-type]
}
^
1 er
请问大家,你们有遇到这种问题吗? 我程序中是有返回值的。
全部评论
最后一个函数把else if 改成else,最后的if可能导致函数没有返回值
点赞 回复
分享
发布于 2017-05-30 10:14
没有代码谁知道?
点赞 回复
分享
发布于 2017-05-29 18:01
乐元素
校招火热招聘中
官网直投
贴代码
点赞 回复
分享
发布于 2017-05-29 18:34
谢谢你们的回复,若有空闲时间,希望你们能帮忙看看,谢谢~ class Solution { public: int minNumberInRotateArray(vector<int> rotateArray) { if (rotateArray.size() == 0) { return 0; } pStart = 0; pEnd = rotateArray.size() - 1; pMid = (pStart + pEnd) / 2; if (rotateArray[pStart]<rotateArray[pMid] && rotateArray[pMid]<rotateArray[pEnd]) { return rotateArray[pStart]; } else if (rotateArray[pStart] == rotateArray[pMid] && rotateArray[pMid] == rotateArray[pEnd]) { return findMinNumberTraversal(rotateArray); } else { return findMinNumber(rotateArray); } } private: int findMinNumberTraversal(vector<int> array) { int minNumber = array[0]; for (int i = 0; i<array.size(); i++) { minNumber = min(minNumber, array[i]); } return minNumber; } int  findMinNumber(vector<int> array) { while (pEnd>pStart) { if (array[pStart]<array[pMid] && array[pEnd]<array[pMid]) { pStart = pMid; } else if (array[pStart]>array[pMid]) { pEnd = pMid; } pMid = (pStart + pEnd) / 2; if (pEnd == pStart + 1) { return array[pEnd]; } } } int pStart; int pEnd; int pMid; };
点赞 回复
分享
发布于 2017-05-29 19:17
代码没看,不过这个错误是说 有返回值的函数却没有返回,应该是if else这些后面没有return或者最后一句是else if 而不是else
点赞 回复
分享
发布于 2017-05-29 22:54
确认每个分支都有return
点赞 回复
分享
发布于 2017-05-29 23:30
最后加个return
点赞 回复
分享
发布于 2017-05-30 11:25
十分感谢各位解答,你们说的方法,我都一一试过了。发现是代码写得不完全正确的原因,尽管VS中某些用例跑通了。其他的错误还在。我参看书上的代码,通过了~
点赞 回复
分享
发布于 2017-05-30 20:22
应该是你findMinNumber 函数里没有 返回语句
点赞 回复
分享
发布于 2017-05-31 17:12

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务