首页 > 解决方案 > 控制到达非空函数的结尾 [-Wreturn-type]

问题描述

我写了一个代码片段,这样:

int gnrt(vector <int> vect, int n)
{
    std::vector <int> :: iterator it;
    it = find(vect.begin(), vect.end(), n);
    if(it!=vect.end()) gnrt(vect, n+1);
    else return n;
}

我试图找到一个与向量内的任何元素都不相似的数字 n 。但它一直显示警告:

In function 'int gnrt(std::vector<int>, int)':
warning: control reaches end of non-void function [-Wreturn-type]

任何人都请解释这里发生了什么。

标签: c++algorithmfunctionstdvector

解决方案


问题在这里:

if(it!=vect.end()) gnrt(vect, n+1);
    else return n;

您的 if 案例没有返回值。

你可能想要这样做:

if (it!=vect.end()) 
     return gnrt(vect, n+1);
else 
     return n;

我不知道您使用的是什么编译器,但通常会显示生成错误或警告的行以帮助您找到问题。


推荐阅读