首页 > 解决方案 > Spyder 重启内核似​​乎是整数溢出问题

问题描述

我一直在尝试对上面写的 3 个函数进行压力测试,以找到阶乘。我通常使用无限循环运行压力测试,在我得到 100 个好的结果后会中断。但是对于这些,我可以运行循环的最大值仅为 5 次(我将 while True 替换为 for i in range(5)。如果我想运行它超过 5 次,内核将重新启动并且不会执行编码。

我的问题是:

  1. 它是由于整数溢出而发生的吗?如果是,那么python中溢出的限制是什么?
  2. 还是我的 spyder IDE 有问题?
  3. 整数溢出限制是否取决于我的系统配置?还是所有系统都一样?
def factorial_naive(n):
    if n==1:
        return 1
    return n*factorial_naive(n-1)

def factorial_loop(n):
    mul=1
    for i in range(1,n+1):
        mul= mul*i
    return mul

def factorial_list(n):
    f= [1]
    for i in range(1,n+1):
        f.append(i*f[i-1])
    return f[n]

压力测试:

def stresstest():
import random
random.seed(5)
for i in range(5):
    n= random.randint(0,10)

    print(f' factorial of {n}, Result1= {factorial_naive(n)}')
    print(f' factorial of {n}, Result2= {factorial_loop(n)}')
    print(f' factorial of {n}, Result3= {factorial_list(n)}')
    
    if factorial_naive(n) == factorial_loop(n) == factorial_list(n):
        print('ok\n')

    else: 
        print('Error')
        break

压力测试()

标签: pythonoverflowspyderrestartfactorial

解决方案


推荐阅读