返回信息流刚看python,练了一下归并排序,一直没想通为什么递归深度超了
def merge(a,p,q,r):
n1=q-p+1
n2=r-q
L,R=[],[]
for i in range(0,n1):
L.append(a[p+i])
for j in range(0,n2):
R.append(a[q+1+j])
i,j=0,0
for k in range(p,r+1):
if i>=n1:
a[k]=R[j]
j=j+1
elif j>=n2:
a[k]=L[i]
i=i+1
elif L[i]>R[j]:
a[k]=R[j]
j=j+1
else:
a[k]=L[i]
i=i+1
def sort(a,p,q):
if p<q:
mid=p+(q-p)/2
sort(a,p,mid)
sort(a,mid+1,q)
merge(a,p,mid,q)
return;
这是一条镜像帖。来源:北邮人论坛 / python / #12597同步于 2016/3/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
[问题] python新手
cjby
2016/3/5镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
啊,谢谢。暖神回复我了,。改了后在电脑端显示是缩进正常的,手机端不知道为什么就成这样了[ema1]
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: 打屁屁。把程序用4个空格缩进,然后用论坛的“语法标亮”功能(不要把后面那个[ / c o d e ]标签弄丢了)发一下吧。
通过『我邮2.0』发布
【 在 cjby 的大作中提到: 】
: 啊,谢谢。暖神回复我了,。改了后在电脑端显示是缩进正常的,手机端不知道为什么就成这样了
:
: 通过『我邮2.0』发布
为什么用8个空格呢?怪怪的。
自己跑的程序是有return的。现在发现原来我的编译器3/2=1.5而不是1,而要3//2=1。所以p<r一直满足导致递归深度过大。我看的教程上取模是/,为什么 非得用//
【 在 Agosits 的大作中提到: 】
: 我就瞎猜一下,少年你的return 呢
【 在 cjby 的大作中提到: 】
: 自己跑的程序是有return的。现在发现原来我的编译器3/2=1.5而不是1,而要3//2=1。所以p<r一直满足导致递归深度过大。我看的教程上取模是/,为什么 非得用//
你看的是python教程吗,python3/2的确就是小数