鱼C论坛

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

[已解决]求教 用函数递归的方法求列表中的最小值

[复制链接]
发表于 2017-4-14 20:06:57 | 显示全部楼层 |阅读模式

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

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

x
在列表 t[i:j]中求 i 到 j 中的最小值, 如何用递归算出来?谢谢
最佳答案
2017-4-14 21:39:20
list1 = [5,78,-69,62,66,785,2,35,41]
def lmin(t,i,j,m=9999):
  if i==j:
    return m
  else:
    if t[i]<m: m = t[i]
    return lmin(t,i+1,j,m)
print lmin(list1,1,7)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-14 20:08:37 | 显示全部楼层
你怎么又发了一遍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 20:16:00 | 显示全部楼层
  1. list1 = [5,78,-69,62,66,785,2,35,41]
  2. minnum = list1[1]
  3. for i in list1:
  4.     if i < minnum:
  5.         minnum = i
  6. print(minnum)
复制代码

点评

lumber发过的  发表于 2017-4-14 20:16
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-14 20:23:17 | 显示全部楼层

这是迭代啊 我想问的是递归
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 20:24:16 | 显示全部楼层
qpwoeiruyt 发表于 2017-4-14 20:23
这是迭代啊 我想问的是递归

抱歉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 20:33:47 | 显示全部楼层
天才用递归,我不用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 21:22:37 | 显示全部楼层
  1. list1 = [5,78,-69,62,66,785,2,35,41]
  2. def func(listx,i,temp):
  3.     if i < len(listx):
  4.         if listx[i]<temp:
  5.             temp = listx[i]
  6.         return func(listx,i+1,temp)
  7.     else:
  8.         return temp
  9. minnum = func(list1,0,list1[0])
  10. print(minnum)
复制代码

感觉代码还可以再简单点,我对python熟悉度还不够只能写成这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 21:39:20 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
list1 = [5,78,-69,62,66,785,2,35,41]
def lmin(t,i,j,m=9999):
  if i==j:
    return m
  else:
    if t[i]<m: m = t[i]
    return lmin(t,i+1,j,m)
print lmin(list1,1,7)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-14 22:41:01 | 显示全部楼层
jerryxjr1220 发表于 2017-4-14 21:39
list1 = [5,78,-69,62,66,785,2,35,41]
def lmin(t,i,j,m=9999):
  if i==j:

但假设列表是 list1 = [5,7,9,12,16,18,22,25,31] 最后返回的最小值为什么是7不是5呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-14 22:54:17 From FishC Mobile | 显示全部楼层
本帖最后由 jerryxjr1220 于 2017-4-14 22:56 编辑
qpwoeiruyt 发表于 2017-4-14 22:41
但假设列表是 list1 = [5,7,9,12,16,18,22,25,31] 最后返回的最小值为什么是7不是5呢?


你设置的初始值要从0开始,不是1哦
python默认的索引都是从0开始的
print lmin(list1,0,8)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 20:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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