我正在写一个递归函数来打印给定数字范围内第一个出现的数字的平方根数,例如,在80-90范围之间,第一个数字是具有完美平方根的第一个数字是9.另外9具有3的理想平方根,但3没有理想的等根。因此计数应为2:81:9-> 3. count = 2
import math
def sqrtCount(num, countVal):
count = countVal
root = math.sqrt(num)
if int(root + 0.5) ** 2 != num:
return count
else:
count += 1
sqrtCount(root, count)
return count
min = int(input("Enter Minimum number: "))
max = int(input("Enter Maximum number: "))
for i in range(min, max + 1):
val = sqrtCount
if val(i, 0) > 0:
print(val(i, 0))
break
答案 0 :(得分:1)
首先,您的代码很难阅读。
val = sqrtCount
在这里没有很好的用途。在我看来,您想要
for i in range(min, max + 1):
val = sqrtCount(i, 0)
if val > 0:
print(val)
break
也是
count = countVal
似乎没有帮助。删除它会简化方法并帮助您自己理解它。最后,它就像
def sqrtCount(num, countVal):
root = math.sqrt(num)
if int(root + 0.5) ** 2 != num:
return countVal
else:
return sqrtCount(root, countVal +1)