C语言中的指针和递归函数
我已经创建了一个带有数字的列表。例如:C语言中的指针和递归函数,c,pointers,recursion,C,Pointers,Recursion,我已经创建了一个带有数字的列表。例如: -3 4 -2 -1 4 5 两个连续节点的乘积为-14-82-421。我想检查两个节点的乘积是否总是大于以下节点的乘积。我使用了一个递归函数,在本例中,由于2>-4,条约不成功 我还想打印一条消息,显示导致问题的第一个节点。在本例中为-1,它是第4个节点。如何返回显示错误节点的指针?见问号:) 我想检查两个节点的乘积是否总是大于以下节点的乘积 我认为您的代码是错误的,即您有>=但应该是next->next==0){ printf(“成功”); 返回0;
-3 4 -2 -1 4 5
两个连续节点的乘积为-14-82-421
。我想检查两个节点的乘积是否总是大于以下节点的乘积。我使用了一个递归函数,在本例中,由于2>-4
,条约不成功
我还想打印一条消息,显示导致问题的第一个节点。在本例中为-1,它是第4个节点。如何返回显示错误节点的指针?见问号:)
我想检查两个节点的乘积是否总是大于以下节点的乘积
我认为您的代码是错误的,即您有>=但应该是next->next==0){
printf(“成功”);
返回0;
}
如果((节点->内容*节点->下一步->内容)下一步->内容*节点->下一步->下一步->内容)){
printf(“由于编号:%d和%d而失败”,节点->下一步->内容,节点->下一步->下一步->内容);
返回节点;
}
返回(findNode(节点->下一步));
}
int main(){
结构节点node1={5,0};
结构节点node2={4,&node1};
结构节点node3={-1,&node2};
结构节点node4={-2,&node3};
结构节点node5={4,&node4};
结构节点node6={-3,&node5};
结构节点*res=findNode(&node6);
如果(res!=0){
//res是指向错误节点的指针
}
返回0;
}
int main(){if(ptr!=NULL){printf(“\n错误是由%dth节点引起的。”,???);}else printf(“\n%d”,ptr);使用递归函数时要小心,如果列表足够大,可能会得到一个堆栈Overflow@Hmmas-通过编辑在您的代码中添加注释。@Hmmas如果有帮助,请接受我的回答否,
-3*4
不是-14
:-)非常感谢您的时间。但是,我不应该将我可以给任意多个我喜欢的数字。我应该从递归中得到一个指针,以找出哪个节点导致我的treaty@Hmmas这只是一个示例-您可以修改它以获得您喜欢的节点,而不是创建变量。
struct node* findNode(struct node *junc) {
//Success
if(junc->link->link==NULL){
printf("SUCCESS");
return NULL;
}
//Failure
if (((junc->content)*(junc->link->content))>=((junc->link->content)*(junc->link->link->content))) {
printf("FAIL.");
printf("\nFAIL because of numbers:%d %d.",junc->link->content,junc->link->link->content);
return junc;
}
return(findNode(junc->link));
}
#include <stdio.h>
struct node {
int content;
struct node* next;
};
struct node* findNode(struct node* node) {
if(node->next->next == 0){
printf("SUCCESS");
return 0;
}
if ((node->content * node->next->content) <= (node->next->content * node->next->next->content)) {
printf("FAIL because of numbers: %d and %d", node->next->content, node->next->next->content);
return node;
}
return(findNode(node->next));
}
int main() {
struct node node1 = {5, 0};
struct node node2 = {4, &node1};
struct node node3 = {-1, &node2};
struct node node4 = {-2, &node3};
struct node node5 = {4, &node4};
struct node node6 = {-3, &node5};
struct node* res = findNode(&node6);
if (res != 0) {
// res is a pointer to the wrong node
}
return 0;
}