C++ 如何在c+中使用递归查找列表中的偶数之和+;?
在编写返回值(递归或非递归)的函数时,需要探索代码中的所有路径,而不仅仅是主要的“感兴趣的路径” 在您的具体情况下,您需要决定返回什么C++ 如何在c+中使用递归查找列表中的偶数之和+;?,c++,c++11,c++14,c++builder,C++,C++11,C++14,C++builder,在编写返回值(递归或非递归)的函数时,需要探索代码中的所有路径,而不仅仅是主要的“感兴趣的路径” 在您的具体情况下,您需要决定返回什么 当当前节点表示偶数时-您的代码已经涵盖了这种情况 当当前节点表示奇数时-需要返回与节点不存在时相同的值,并且 当没有当前节点时-当列表为null或空(即零)时,将返回该值 您需要为其余两种情况添加return语句。一旦你这样做了,你的函数就完成了。当你写一个返回值的函数时,不管是递归的还是非递归的,你都需要在代码中探索所有的路径,而不仅仅是你主要的“感兴趣的
- 当当前节点表示偶数时-您的代码已经涵盖了这种情况
- 当当前节点表示奇数时-需要返回与节点不存在时相同的值,并且
- 当没有当前节点时-当列表为null或空(即零)时,将返回该值
您需要为其余两种情况添加
return
语句。一旦你这样做了,你的函数就完成了。当你写一个返回值的函数时,不管是递归的还是非递归的,你都需要在代码中探索所有的路径,而不仅仅是你主要的“感兴趣的路径”
在您的具体情况下,您需要决定返回什么
- 当当前节点表示偶数时-您的代码已经涵盖了这种情况
- 当当前节点表示奇数时-需要返回与节点不存在时相同的值,并且
- 当没有当前节点时-当列表为null或空(即零)时,将返回该值
您需要为其余两种情况添加
return
语句。一旦你这样做了,你的函数就完成了。这里有另一种方法来实现同样的事情,在每次调用函数时通过引用传递sum
变量
int list::Sum_Even_Values(node *head)
{
static int sum=0;
if(!isempty())
{
if(head->info %2==0)
return head->info +Sum_Even_Values(head->next);
}
}
下面是另一种实现相同功能的方法,即在每次调用函数时通过引用传递
sum
变量
int list::Sum_Even_Values(node *head)
{
static int sum=0;
if(!isempty())
{
if(head->info %2==0)
return head->info +Sum_Even_Values(head->next);
}
}
不要使用
静态
变量,因为如果需要对列表进行多次求和,则无法将其重置回0。请尝试以下方法:
void sumEvenValues(Node * head, int& sum){
if (head != NULL){
if (head->info % 2 == 0){
sum += head->info;
}
sumEvenValues(head->next, sum);
}
}
不要使用
静态变量,因为如果需要对列表进行多次求和,将无法将其重置回0。请尝试以下方法:
void sumEvenValues(Node * head, int& sum){
if (head != NULL){
if (head->info % 2 == 0){
sum += head->info;
}
sumEvenValues(head->next, sum);
}
}
如果isempty()
返回true会发生什么?或者如果head->info%2!=0
?然后返回什么?如果isempty()
返回true会发生什么?或者如果head->info%2!=0
?那你回来干什么?