Gacy 发表于 2021-5-25 18:48:16

大佬们能把这两个算法转换成递归算法吗球球了

int seqSearch(seqlist l, datatype key)
{int k=l.len-1;
while(k>=0&&l.data!=key) k--;
return(k);
}linklist linkSearch(linklist head,datatype key)
{
   linklist p=head->next;
while(p&&p=>data!=key)
p=p->next;
return p;
}转换成递归呜呜谢谢了

lei1996 发表于 2021-5-25 23:49:06

int seqSearch(seqlist l, datatype key)
{
static int k = 0;
if(k < l.len && l.data != key)
{
k++;
return seqSearch(l, key);
}
else
{
return k;
}
}

linklist linkSearch(linklist head,datatype key)
{
if(head && head->data != key)
{
return linkSearch(head->next, key);
}
else
{
return head;
}
}

Gacy 发表于 2021-5-26 21:07:55

lei1996 发表于 2021-5-25 23:49


大佬能具体说说嘛

lei1996 发表于 2021-5-26 21:37:09

说什么啊{:10_256:}

lei1996 发表于 2021-5-26 21:47:54

第一个就大概是一个在数组中找到所给值的索引   我的想法是给个静态变量k让k值不断加1后调用自身   以此找到索引
第二个就是链表找到所给值的节点   如果该节点不满足就把下个节点传入该函数进行递归判断

Gacy 发表于 2021-5-26 22:44:15

lei1996 发表于 2021-5-26 21:47
第一个就大概是一个在数组中找到所给值的索引   我的想法是给个静态变量k让k值不断加1后调用自身   以 ...

不设静态变量可以吗 可以将while改成if 然后k--改成seqSearch(    这个可以么

lei1996 发表于 2021-5-26 23:01:34

Gacy 发表于 2021-5-26 22:44
不设静态变量可以吗 可以将while改成if 然后k--改成seqSearch(    这个可以么

不用静态变量k--之后你没办法传给递归的函数
int seqSearch(seqlist l, datatype key)这里面没有传k值得参数,除非你加一个参数int k

lei1996 发表于 2021-5-26 23:09:13

lei1996 发表于 2021-5-26 23:01
不用静态变量k--之后你没办法传给递归的函数
int seqSearch(seqlist l, datatype key)这里面没有传k值 ...

想到了你可以试试直接while 改成 if
递归之前l.len--

Gacy 发表于 2021-5-27 19:41:43

lei1996 发表于 2021-5-26 23:09
想到了你可以试试直接while 改成 if
递归之前l.len--

这个可以再说具体吗 或者把代码全写出来呜呜

lei1996 发表于 2021-5-27 20:03:51

int seqSearch(seqlist l, datatype key)
{int k=l.len-1;
if (k>=0&&l.data!=key)
{
    l.len--;
    return seqSearch(l,key);
}
else
{
    return k;
}
}

Gacy 发表于 2021-5-27 20:40:02

lei1996 发表于 2021-5-27 20:03


感谢感谢大兄弟我就是小菜鸡呜呜
页: [1]
查看完整版本: 大佬们能把这两个算法转换成递归算法吗球球了