鱼C论坛

 找回密码
 立即注册
查看: 5435|回复: 10

[已解决]大佬们能把这两个算法转换成递归算法吗球球了

[复制链接]
发表于 2021-5-25 18:48:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. int seqSearch(seqlist l, datatype key)
  2. {  int k=l.len-1;
  3. while  (k>=0&&l.data[k]!=key) k--;
  4. return(k);
  5. }
复制代码
  1. linklist linkSearch(linklist head,datatype key)
  2. {
  3.      linklist p=head->next;
  4. while(p&&p=>data!=key)
  5. p=p->next;
  6. return p;
  7. }
复制代码
转换成递归呜呜谢谢了


最佳答案
2021-5-25 23:49:06
  1. int seqSearch(seqlist l, datatype key)
  2. {  
  3. static int k = 0;
  4. if(k < l.len && l.data[k] != key)
  5. {
  6. k++;
  7. return seqSearch(l, key);
  8. }
  9. else
  10. {
  11. return k;
  12. }
  13. }

  14. linklist linkSearch(linklist head,datatype key)
  15. {
  16. if(head && head->data != key)
  17. {
  18. return linkSearch(head->next, key);
  19. }
  20. else
  21. {
  22. return head;
  23. }
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-25 23:49:06 | 显示全部楼层    本楼为最佳答案   
  1. int seqSearch(seqlist l, datatype key)
  2. {  
  3. static int k = 0;
  4. if(k < l.len && l.data[k] != key)
  5. {
  6. k++;
  7. return seqSearch(l, key);
  8. }
  9. else
  10. {
  11. return k;
  12. }
  13. }

  14. linklist linkSearch(linklist head,datatype key)
  15. {
  16. if(head && head->data != key)
  17. {
  18. return linkSearch(head->next, key);
  19. }
  20. else
  21. {
  22. return head;
  23. }
  24. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-26 21:07:55 | 显示全部楼层

大佬能具体说说嘛
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-26 21:37:09 | 显示全部楼层
说什么啊  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-26 21:47:54 | 显示全部楼层
第一个就大概是一个在数组中  找到所给值的索引   我的想法是给个静态变量k  让k值不断加1后调用自身   以此找到索引
第二个就是链表找到所给值的节点   如果该节点不满足  就把下个节点传入该函数进行递归判断
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

不设静态变量可以吗 可以将while改成if 然后k--改成seqSearch(    这个可以么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

想到了  你可以试试直接  while 改成 if
递归之前  l.len--
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-27 19:41:43 | 显示全部楼层
lei1996 发表于 2021-5-26 23:09
想到了  你可以试试直接  while 改成 if
递归之前  l.len--

这个可以再说具体吗 或者把代码全写出来呜呜
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-27 20:03:51 | 显示全部楼层
  1. int seqSearch(seqlist l, datatype key)
  2. {  int k=l.len-1;
  3. if (k>=0&&l.data[k]!=key)
  4. {
  5.     l.len--;
  6.     return seqSearch(l,key);
  7. }
  8. else
  9. {
  10.     return k;
  11. }
  12. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-27 20:40:02 | 显示全部楼层

感谢感谢大兄弟  我就是小菜鸡呜呜
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-12 21:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表