c - 递归查找列表中的最小偶数
问题描述
我写了这个函数:
struct nodo * MinimoPariListaRic(struct nodo * top) {
struct nodo * minimo_p = NULL; //this should be the minimum even number
//list have one or no one element
if(top) {
if(!top->next)
if(top->valore % 2 == 0) return top; // valore(italian) = value
else return NULL;
}
else return NULL;
if(top->next)
minimo_p = MinimoPariListaRic(top->next);
if (top->valore % 2 == 0)
{
if(minimo_p->valore < top->valore) return minimo_p;
else return top;
}
else return minimo_p;
}
如果列表的元素都是偶数,函数会返回最小值,就可以了。但如果出现奇数,则该功能无法正常工作。如果所有数字都是奇数,则函数应返回 NULL。
解决方案
因为如果列表在最后一个位置包含一个奇数整数并且在任何地方至少包含一个偶数整数,则函数从递归返回后 minimo_p 可以为 NULL 。
这行是错误的:
if(minimo_p->valore < top->valore) return minimo_p;
您可以在此处添加空条件:
if(minimo_p && minimo_p->valore < top->valore) return minimo_p;
推荐阅读
- sql - 需要决策树的想法
- google-app-engine - 创建或删除新的 GAE 实例时,PubSub 增加/减少 CloudSQL 内存
- c# - 从 DbContext 检索数据时如何正确使用“使用”语句
- javascript - Wordpress - 如何在 Javascript 变量中获取 Post_ID() 和回显?
- php - 添加两个数组变量
- perl - 在 perl 中循环从 InfluxDB::HTTP 返回的数据结构
- css - Bootstrap 4.3.1 样式在小屏幕上丢失
- python - 如果我进行一次热编码,我是否总是需要保留一份训练数据的副本?
- sparql - 通过 sparql 从 wikidata 中提取同义词
- javascript - 将一个数组与另一个数组进行比较,以确保第二个数组不包含不同的值