[英]Python RecursionError
(我是一個完全的初學者)我想寫一個遞歸的 function 可以告訴我一個數字是否是質數:但我不斷收到相同的遞歸錯誤:這是我的代碼:
from math import *
def has_a_divider(n,p):
if n%p==0:
return True
elif has_a_divider(n,(p-1))!= True:
return False
else:
return False
def is_prime(a):
if has_a_divider(a,sqrt(a))==False:
return True
else:
return False
你的問題是sqrt(a)
它返回一個浮點數而不是你的代碼需要的 int。
您可以將其替換為ceil(sqrt(a))
以從中獲取 int 。
此外,此代碼不適用於查找數字是否為素數,因為所有數字都至少有 1 有一個分隔符。 一個可能的解決方案是更新has_a_divider
以檢查大於 1 的分隔符。
一個可能的實現:
from math import ceil, sqrt
def has_a_divider(n,p):
if p < 2:
return False
if n % p==0:
return True
return has_a_divider(n,(p-1))
def is_prime(a):
if a == 1:
return False
return not has_a_divider(a,ceil(sqrt(a)))
print(is_prime(3))
print(is_prime(5))
print(is_prime(4))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.