import sys
import time
from random import randint
import numpy as np
sys.setrecursionlimit(6000)
nums = [10, 50, 100, 500, 1000, 5000]
def bubble(A, n):
for i in range(n - 1):
if A[i] > A[i + 1]:
A[i], A[i + 1] = A[i + 1], A[i]
if n - 1 > 1:
bubble(A, n - 1)
def time_by_bubble_sort(nums):
time_taken_by_bubble_sort = []
for num in nums:
A = list(np.random.randint(low=1, high=num, size=num))
st_time = time.time()
bubble(A, len(A))
end_time = time.time()
time_taken = end_time - st_time
time_taken_by_bubble_sort.append(time_taken)
return time_taken_by_bubble_sort
print(time_by_bubble_sort(nums))我想把时间和我的数值进行比较: 10,50,100,500,1000,5000为什么不为最后一个值(5000)生成一个时间,但是当我把它切换到2000或者删除它时,它会打印出来?
这是错误代码:退出代码-1073741571 (0xC00000FD)
在googling之后,我的递归函数可能是无限的,但我没有看到它。
抱歉英语不太好。
发布于 2022-12-03 20:11:30
根据sys.setrecursionlimit的说法,强调地雷:
最高可能的限制是与平台有关的。当用户拥有需要深度递归的程序和支持更高限制的平台时,可能需要将限制设置得更高。这应该谨慎行事,因为过高的极限会导致崩盘.
你6000的限额太高了。我的系统在大约2130次对冒泡的递归调用后崩溃,这就解释了为什么使用2000而不是5000工作。崩溃是由于Python进程的堆栈耗尽了空间,而空间依赖于平台。
https://stackoverflow.com/questions/74635282
复制相似问题